- Выбор случайного элемента из списка в Python
- Введение
- Выбор случайного элемента из списка
- Использование функции random.randint()
- Использование функции random.randrange()
- Использовании функции random.choice()
- Выбор нескольких случайных элементов из списка
- Без повторения элементов
- С повторением элементов
- Заключение
- Модуль random на примерах — Изучение методов генерации случайных данных
- Цели данной статьи
- Как использовать модуль random в Python
- Что такое функция random.choice() в Python
- Метод random.choice() Python
- Синтаксис
- Возвращаемое значение
- Выбор нескольких вариантов из списка
- Случайный выбор Python без повторения
- Python random.sample()
- Исключения
- Python random.choices()
- Случайный выбор из словаря Python
Выбор случайного элемента из списка в Python
В этой статье мы рассмотрим, как случайным образом выбирать элементы из списка в Python. Мы рассмотрим извлечение случайных элементов, а также извлечение нескольких элементов — с повторением и без.
Введение
Выбор случайного элемента из списка является частой задачей — будь то случайное значение из списка рекомендаций или просто случайная строка.
Выбор случайного элемента из списка
Наиболее интуитивным и естественным подходом к решению этой проблемы является генерация случайного числа, которое действует как индекс доступа к элементу из списка.
Для реализации этого подхода рассмотрим некоторые методы генерации случайных чисел в Python: random.randint() и random.randrange(). Дополнительно мы можем использовать random.choice() и поставлять итерабельное число — в результате чего случайный элемент из этого итерабельного числа возвращается обратно.
Использование функции random.randint()
random.randint(a, b) возвращает случайное целое число между a и b включительно.
Нам понадобится случайный индекс в диапазоне от 0 до len(list) — 1, чтобы получить случайный индекс элемента в списке:
import random test_list = ["1", "2", "3", "4", "5", "6"] random_index = random.randint(0, len(test_list) - 1) print(test_list[random_index])
Использование функции random.randrange()
random.randrange(a) — это другой метод, который возвращает случайное число n, равное 0
import random test_list = ["1", "2", "3", "4", "5", "6"] random_index = random.randrange(len(test_list)) print(test_list[random_index])
Так как random.randrange(len(test_list)) возвращает случайно сгенерированное число в диапазоне от 0 до len(test_list) — 1, мы используем его для доступа к элементу в случайном порядке в буквах, как мы делали это в предыдущем подходе.
Этот подход немного проще, чем предыдущий просто потому, что мы не указываем начальную точку, которая по умолчанию равна 0.
Использовании функции random.choice()
Еще лучшим решением, чем последнее было бы использование функции random.choice(), так как это именно та функция, которая предназначена для решения такой задачи:
import random test_list = ["1", "2", "3", "4", "5", "6"] print(random.choice(test_list))
Выбор нескольких случайных элементов из списка
Без повторения элементов
Первый метод, который мы можем использовать для случайного выделения более чем одного элемента — random.sample(). Он производит выборку, основываясь на том, сколько выборок мы хотим получить:
import random test_list = ["1", "2", "3", "4", "5", "6"] print(random.sample(test_list, 3))
Этот метод выбирает элементы без замены т.е. выбирает без дубликатов и повторений.
С повторением элементов
Как и предыдущая функция, функция random.choices() возвращает список случайно выбранных элементов из заданного итерабельного списка. Однако, она не отслеживает выбранные элементы, поэтому можно получить и дублирующие элементы:
import random test_list = ["1", "2", "3", "4", "5", "6"] print(random.choices(test_list, k=3))
Заключение
В этой статье мы рассмотрели несколько способов получения одного или нескольких случайно выбранных элементов из списка на Python.
Мы получили доступ к списку по случайному индексу с помощью randint() и randrange(), а также получили случайные элементы с помощью choices() и sample().
Программирую на Python с 2017 года. Люблю создавать контент, который помогает людям понять сложные вещи. Не представляю жизнь без непрерывного цикла обучения, спорта и чувства юмора.
Ссылка на мой github есть в шапке. Залетай.
Модуль random на примерах — Изучение методов генерации случайных данных
В данной статье мы рассмотрим процесс генерации случайных данных и чисел в Python. Для этого будет использован модуль random и некоторые другие доступные модули. В Python модуль random реализует генератор псевдослучайных чисел для различных распределений, включая целые и вещественные числа с плавающей запятой.
Список методов модуля random в Python:
Метод | Описание |
---|---|
seed() | Инициализация генератора случайных чисел |
getstate() | Возвращает текущее внутренне состояние (state) генератора случайных чисел |
setstate() | Восстанавливает внутреннее состояние (state) генератора случайных чисел |
getrandbits() | Возвращает число, которое представляет собой случайные биты |
randrange() | Возвращает случайное число в пределах заданного промежутка |
randint() | Возвращает случайное число в пределах заданного промежутка |
choice() | Возвращает случайный элемент заданной последовательности |
choices() | Возвращает список со случайной выборкой из заданной последовательности |
shuffle() | Берет последовательность и возвращает ее в перемешанном состоянии |
sample() | Возвращает заданную выборку последовательности |
random() | Возвращает случайное вещественное число в промежутке от 0 до 1 |
uniform() | Возвращает случайное вещественное число в указанном промежутке |
triangular() | Возвращает случайное вещественное число в промежутке между двумя заданными параметрами. Также можно использовать параметр mode для уточнения середины между указанными параметрами |
betavariate() | Возвращает случайное вещественное число в промежутке между 0 и 1, основываясь на Бета-распределении, которое используется в статистике |
expovariate() | Возвращает случайное вещественное число в промежутке между 0 и 1, или же между 0 и -1 , когда параметр отрицательный. За основу берется Экспоненциальное распределение, которое используется в статистике |
gammavariate() | Возвращает случайное вещественное число в промежутке между 0 и 1, основываясь на Гамма-распределении, которое используется в статистике |
gauss() | Возвращает случайное вещественное число в промежутке между 0 и 1, основываясь на Гауссовом распределении, которое используется в теории вероятности |
lognormvariate() | Возвращает случайное вещественное число в промежутке между 0 и 1, основываясь на Логнормальном распределении, которое используется в теории вероятности |
normalvariate() | Возвращает случайное вещественное число в промежутке между 0 и 1, основываясь на Нормальном распределении, которое используется в теории вероятности |
vonmisesvariate() | Возвращает случайное вещественное число в промежутке между 0 и 1, основываясь на распределении фон Мизеса, которое используется в направленной статистике |
paretovariate() | Возвращает случайное вещественное число в промежутке между 0 и 1, основываясь на распределении Парето, которое используется в теории вероятности |
weibullvariate() | Возвращает случайное вещественное число в промежутке между 0 и 1, основываясь на распределении Вейбулла, которое используется в статистике |
Цели данной статьи
Далее представлен список основных операций, которые будут описаны в руководстве:
- Генерация случайных чисел для различных распределений, которые включают целые и вещественные числа с плавающей запятой;
- Случайная выборка нескольких элементов последовательности population ;
- Функции модуля random;
- Перемешивание элементов последовательности. Seed в генераторе случайных данных;
- Генерация случайных строки и паролей;
- Криптографическое обеспечение безопасности генератора случайных данных при помощи использования модуля secrets. Обеспечение безопасности токенов, ключей безопасности и URL;
- Способ настройки работы генератора случайных данных;
- Использование numpy.random для генерации случайных массивов;
- Использование модуля UUID для генерации уникальных ID.
В статье также даются ссылки на некоторые другие тексты сайта, связанные с рассматриваемой темой.
Как использовать модуль random в Python
Для достижения перечисленных выше задач модуль random будет использовать разнообразные функции. Способы использования данных функций будут описаны в следующих разделах статьи.
Что такое функция random.choice() в Python
Выбор случайного элемента — повторяющаяся задача в Python, и, к счастью, он поддерживает модуль random, предоставляющий функции для генерации случайных строк, чисел, целых чисел и элементов из последовательности.
Метод random.choice() Python
Python random.choice() — это встроенный метод, который возвращает случайный элемент из непустой последовательности. Функция random.choice() в Python принимает последовательность, которая может быть списком, массивом, строкой, словарем, кортежем или набором.
Чтобы найти случайный элемент из последовательности, используйте метод random.choice(). Вы также можете выбрать случайный пароль из списка слов и случайный элемент из доступных данных.
Синтаксис
Здесь последовательность может быть списком, строкой, кортежем или любым итерируемым объектом.
Возвращаемое значение
Функция random.choice() возвращает один элемент из последовательности. Если мы передадим пустой список или последовательность в функцию random.choice(), это вызовет IndexError: Невозможно выбрать из пустой последовательности.
Здесь мы импортировали случайный модуль, а затем определили список. Вы можете видеть, что каждый раз, когда мы запускаем вышеуказанную программу, мы получаем разные случайные числа из списка.
Метод random.choice() выбирает случайный элемент из списка каждый раз, когда мы запускаем код.
Выбор нескольких вариантов из списка
Метод random.choice() возвращает только один элемент из списка. Чтобы случайным образом выбрать более одного элемента из списка или набора, я рекомендую вместо этого использовать random.sample() или random.choices().
Мы хотим выбрать четыре случайных элемента из списка и сделать это, и мы использовали метод random.choices().
Мы передали список и параметр k=4, размер выборки, который говорит, что нам нужны четыре случайных элемента из списка.
Случайный выбор Python без повторения
Python random.sample()
random.sample() — это встроенная функция модуля random в Python, которая возвращает список элементов определенной длины, выбранных из последовательности, т. е. список, кортеж, строку или набор. Используется для случайной выборки без замены.
Используйте метод random.sample(), если вы хотите выбрать несколько случайных элементов из списка без повторений или дубликатов.
Исключения
Если размер выборки, т. е. k, больше размера последовательности, возникает ValueError.
File «/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/random.py» , line 363 , in sample
В этом примере вы можете видеть, что значение k больше, чем размер последовательности; именно поэтому он вызовет исключение с именем ValueError.
Python random.choices()
Python random.choices() был добавлен в Python 3.6 для случайного выбора n элементов из списка, но функция random.choices() может повторять элементы.
Метод random.choices() в основном используется для реализации взвешенного случайного выбора, чтобы мы могли выбирать элементы из списка с разной вероятностью.
Случайный выбор из словаря Python
Метод случайного модуля Python random.choice() не принимает словарь, и вам необходимо преобразовать словарь в список, прежде чем передавать его в функцию random.choice().
Давайте получим случайную пару словарей ключ-значение, используя метод random.choice().