Python: Выбор случайного элемента из списка
Last updated
Last updated
В этом уроке вы узнаете, как использовать Python для выбора случайного элемента из списка. Вы научитесь делать это, выбирая случайный элемент из списка с заменой, без замены, а также как воспроизводить ваши результаты. Вы также узнаете, как изменить вес выборов.
Освоение работы со случайными элементами — важный навык в Python. Он имеет множество широких приложений, таких как в Data Science и разработке игр. Например, если вы создаете карточную игру, вам может понадобиться выбрать карту случайным образом. Python поставляется с полезным модулем random
, который мы изучим в этом руководстве, чтобы помочь вам работать со случайным выбором элементов.
К концу этого урока вы получите хорошее понимание того, как использовать несколько полезных функций из модуля random, включая sample()
, choice()
и choices()
. Вы научитесь использовать эти функции для изменения выбора случайных элементов из списка в Python.
Быстрый ответ: Используйте random.choice()
Оглавление
Python имеет встроенный модуль для работы с псевдослучайными числами, который называется random
. Так как он встроен в язык, мы можем легко импортировать его:
Модуль предлагает несколько полезных функций для случайного выбора или выборки из списка в Python. Также он содержит генератор случайных чисел, который позволяет легко воспроизводить результаты, что дает возможность проверять результаты или устранять проблемы в коде.
Самый простой способ выбрать один случайный элемент из списка в Python – использовать функцию random.choice()
. Эта функция принимает один параметр – последовательность. В нашем случае последовательностью будет список, хотя можно использовать и кортеж.
Давайте посмотрим, как можно использовать метод для выбора случайного элемента из списка Python:
Мы видим, что функция choice()
выбирает один случайный элемент из нашего списка.
Функция ожидает непустой список. Что произойдет, если передать пустой список? Функция вызовет IndexError
, и программа завершится с ошибкой, если это не обработать.
Давайте посмотрим, как это выглядит:
Мы видим, что функция вызывает IndexError
.
В следующем разделе вы узнаете, как с помощью Python выбирать случайные элементы без замены.
В этом разделе вы узнаете, как использовать Python для выбора нескольких случайных элементов из списка без замены. Что значит выбор без замены? Выборка без замены означает, что каждый элемент можно выбрать только один раз.
Чтобы использовать Python для выборки случайных элементов без замены, можно использовать функцию random.sample()
. Функция принимает два параметра: список, из которого нужно сделать выборку, и количество элементов для выборки.
Давайте посмотрим, как можно использовать метод random.sample()
, чтобы выбрать несколько случайных элементов из списка:
Можно увидеть, что при передаче значения 2 (для аргумента ключевого слова k
) возвращаются два элемента.
Что произойдет, если мы передадим значение для k
, которое превышает количество элементов в нашем списке? Python вызовет ValueError
. Давайте посмотрим, как это выглядит:
Мы также можем использовать функцию random.sample()
, чтобы перемешать элементы в нашем списке. Мы можем сделать это, просто выбрав все элементы списка.
Ознакомьтесь с моим учебником как рандомизировать элементы списка в Python, чтобы узнать больше способов выполнения этой задачи.
В следующем разделе вы узнаете, как использовать Python для случайного выбора элементов из списка с повторением.
Бывают случаи, когда необходимо выбрать случайные элементы из списка Python с возвратом. Это означает, что элемент может быть выбран более одного раза. Это имеет множество полезных применений, включая статистику.
Для случайного выбора элементов с возвратом можно использовать метод random.choices()
. Подобно функции random.sample()
, этот метод принимает список и количество элементов k
. Поскольку можно выбирать элемент более одного раза, значение k
может превышать количество элементов в списке.
Давайте посмотрим, как можно выбирать элементы с замещением в Python:
Мы видим в приведенном выше примере, что значение 5 было возвращено дважды, хотя оно существует в нашем списке только один раз.
Давайте посмотрим, что произойдет, когда число k превысит количество элементов в списке:
Можно заметить, что при установке значения k, превышающего длину списка, возвращаемый список становится больше оригинального списка.
В следующем разделе вы узнаете, как выбирать случайные элементы с заданными весами из списка в Python.
Бывают случаи, когда вы хотите, чтобы некоторые элементы имели больший вес по сравнению с другими элементами. Это означает, что при выборе случайных элементов вы можете хотеть, чтобы некоторые элементы имели более высокую вероятность быть выбранными.
Мы можем изменить вес наших элементов, передав массив в параметр weights=
. Прежде чем углубляться в то, как это работает, представим, что по умолчанию используется массив с равными весами. Изменяя относительные веса, мы можем указать, насколько более вероятным мы хотим сделать выбор определённого элемента.
Посмотрим, как мы можем использовать Python, чтобы дать одному элементу вероятность выбора в десять раз выше, чем другим элементам в списке:
Здесь переданы веса [10, 1, 1, 1]
. Веса являются относительными, что означает, что первый элемент списка имеет в десять раз больше шансов быть выбранным, чем другие элементы.
В следующем разделе вы узнаете, как воспроизводить результаты при выборе случайных элементов.
Очень полезным элементом в разработке случайных результатов является (иронично) способность воспроизводить результаты. Это может помочь другим воспроизвести ваши результаты и значительно помочь в устранении неполадок в вашей работе.
Модуль random в Python включает концепцию «seed», которая генерирует генератор случайных чисел. Это позволяет нам воспроизводить результаты.
Посмотрим, как мы можем использовать функцию random seed()
, чтобы воспроизвести наши результаты:
Если мы перезапустим эту программу, мы получим те же самые значения каждый раз.
В этом руководстве вы узнали, как использовать Python для случайного выбора элементов из списка. Вы узнали, как использовать модуль random
и его функции choice()
, choices()
, и sample()
для выбора одного или нескольких элементов с возвращением и без. Вы также узнали, как применять веса к выборке, чтобы отдавать предпочтение некоторым элементам больше, чем другим. Наконец, вы узнали, как использовать функцию seed()
, чтобы можно было воспроизвести результаты.
Чтобы узнать больше о модуле random
в Python, ознакомьтесь с официальной документацией здесь.
Чтобы узнать больше о подобных темах, ознакомьтесь с учебными материалами ниже:
Python: проверьте, содержит ли список элемент
7 способов выборки данных в Pandas
Python: найти индекс (или все) подстроки в строке