Выбор случайного элемента — повторяющаяся задача в Python, и, к счастью, он поддерживает модуль random, предоставляющий функции для генерации случайных строк, чисел, целых чисел и элементов из последовательности.
- Метод random.choice() Python
- Синтаксис
- Возвращаемое значение
- Выбор нескольких вариантов из списка
- Случайный выбор Python без повторения
- Python random.sample()
- Исключения
- Python random.choices()
- Случайный выбор из словаря Python
- Выбор случайного элемента из кортежа в Python
- Python random choice из набора
- Случайный выбор Python в диапазоне целых чисел
- Python random choice из логических значений
- Нахождение случайного элемента многомерного массива
Метод random.choice() Python
Python random.choice() — это встроенный метод, который возвращает случайный элемент из непустой последовательности. Функция random.choice() в Python принимает последовательность, которая может быть списком, массивом, строкой, словарем, кортежем или набором.

Чтобы найти случайный элемент из последовательности, используйте метод random.choice(). Вы также можете выбрать случайный пароль из списка слов и случайный элемент из доступных данных.
Синтаксис
|
1 |
random.choice(sequence) |
Параметры:
Здесь последовательность может быть списком, строкой, кортежем или любым итерируемым объектом.
Возвращаемое значение
Функция random.choice() возвращает один элемент из последовательности. Если мы передадим пустой список или последовательность в функцию random.choice(), это вызовет IndexError: Невозможно выбрать из пустой последовательности.
Пример
|
1 2 3 4 |
import random numberList = [11, 19, 21, 29, 46] print("Random item from the list is: ", random.choice(numberList)) |
Вывод
|
1 2 3 4 5 6 7 8 |
➜ pyt python3 app.py Random item from the list is: 11 ➜ pyt python3 app.py Random item from the list is: 46 ➜ pyt python3 app.py Random item from the list is: 19 ➜ pyt python3 app.py Random item from the list is: 29 |
Здесь мы импортировали случайный модуль, а затем определили список. Вы можете видеть, что каждый раз, когда мы запускаем вышеуказанную программу, мы получаем разные случайные числа из списка.
Метод random.choice() выбирает случайный элемент из списка каждый раз, когда мы запускаем код.
Выбор нескольких вариантов из списка
Метод random.choice() возвращает только один элемент из списка. Чтобы случайным образом выбрать более одного элемента из списка или набора, я рекомендую вместо этого использовать random.sample() или random.choices().
|
1 2 3 4 |
import random numberList = [11, 19, 21, 29, 46, 10, 18, 37] print("Random item from the list is: ", random.choices(numberList, k=4)) |
Вывод
|
1 |
Random item from the list is: [10, 29, 37, 46] |
Мы хотим выбрать четыре случайных элемента из списка и сделать это, и мы использовали метод random.choices().
Мы передали список и параметр k=4, размер выборки, который говорит, что нам нужны четыре случайных элемента из списка.
Случайный выбор Python без повторения
Python random.sample()
random.sample() — это встроенная функция модуля random в Python, которая возвращает список элементов определенной длины, выбранных из последовательности, т. е. список, кортеж, строку или набор. Используется для случайной выборки без замены.
Используйте метод random.sample(), если вы хотите выбрать несколько случайных элементов из списка без повторений или дубликатов.
Исключения
Если размер выборки, т. е. k, больше размера последовательности, возникает ValueError.
|
1 2 3 4 |
import random numberList = [11, 19, 21, 29] print("Random item from the list is: ", random.sample(numberList, k=5)) |
Вывод:
|
1 2 3 4 5 6 |
Traceback(most recent call last): File "app.py", line 4, in print("Random item from the list is: ", random.sample(numberList, k=5)) File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/random.py", line 363, in sample raise ValueError("Sample larger than population or is negative") ValueError: Sample larger than population or is negative |
В этом примере вы можете видеть, что значение k больше, чем размер последовательности; именно поэтому он вызовет исключение с именем ValueError.
Python random.choices()
Python random.choices() был добавлен в Python 3.6 для случайного выбора n элементов из списка, но функция random.choices() может повторять элементы.
Метод random.choices() в основном используется для реализации взвешенного случайного выбора, чтобы мы могли выбирать элементы из списка с разной вероятностью.
Случайный выбор из словаря Python
Метод случайного модуля Python random.choice() не принимает словарь, и вам необходимо преобразовать словарь в список, прежде чем передавать его в функцию random.choice().
Давайте получим случайную пару словарей ключ-значение, используя метод random.choice().
|
1 2 3 4 5 6 7 8 9 10 11 |
import random dict = { 'hopper': 'DKH', 'eleven': 'MBB', 'mike': 'FW', 'dustin': 'GM' } key = random.choice(list(dict)) print(f"Random key value pair from the dictionary is:- {key}: {dict[key]}") |
Вывод:
|
1 2 3 4 5 6 |
➜ pyt python3 app.py Random key value pair from the dictionary is:- eleven: MBB ➜ pyt python3 app.py Random key value pair from the dictionary is:- dustin: GM ➜ pyt python3 app.py Random key value pair from the dictionary is:- mike: FW |
Выбор случайного элемента из кортежа в Python
Чтобы получить случайный элемент из кортежа в Python, используйте функцию random.choice().
|
1 2 3 4 5 6 |
import random tup =(11, 18, 19, 21, 29, 46) num = random.choice(tup) print(f"Random item from tuple is: ", num) |
Вывод:
|
1 2 3 4 5 6 7 8 |
➜ pyt python3 app.py Random item from tuple is: 11 ➜ pyt python3 app.py Random item from tuple is: 29 ➜ pyt python3 app.py Random item from tuple is: 19 ➜ pyt python3 app.py Random item from tuple is: 18 |
Сначала мы импортировали модуль random, определили кортеж и передали его функции random.choice(), чтобы получить случайное значение из кортежа и вывести его на консоль.
Python random choice из набора
Чтобы получить случайный элемент из набора в Python, используйте метод random.choice(). Если мы передадим объект set напрямую в функцию выбора, то получим ошибку TypeError: объект set не поддерживает индексацию.
Используя метод random.choice(), мы не можем выбирать случайные элементы напрямую из набора, не копируя их в кортеж.
|
1 2 3 4 5 6 |
import random set = {11, 18, 19, 21, 29, 46} num = random.choice(tuple(set)) print(f"Random item from tuple is: ", num) |
Вывод:
|
1 2 3 4 |
➜ pyt python3 app.py Random item from tuple is: 11 ➜ pyt python3 app.py Random item from tuple is: 18 |
Случайный выбор Python в диапазоне целых чисел
Python range() генерирует целые числа между заданным начальным целым числом и конечным целым числом.
|
1 2 3 4 |
import random print("Randomly choose any number between the range of 1 to 21: ", random.choice(range(1, 21))) |
Вывод:
|
1 2 3 4 5 6 7 8 |
➜ pyt python3 app.py Randomly choose any number between the range of 1 to 21: 14 ➜ pyt python3 app.py Randomly choose any number between the range of 1 to 21: 1 ➜ pyt python3 app.py Randomly choose any number between the range of 1 to 21: 7 ➜ pyt python3 app.py Randomly choose any number between the range of 1 to 21: 2 |
В этом примере мы использовали функцию range(), чтобы определить верхний и нижний пределы целых чисел и найти случайное число между пределом и включая его.
Каждый раз, когда мы запускаем приведенную выше программу, мы получаем разные целые числа, но это не нарушает верхний предел функции диапазона. Это потому, что он всегда дает случайное число в пределах лимита.
Python random choice из логических значений
Чтобы выбрать случайное логическое значение из True или False, используйте функцию random.choice(). Такой сценарий: подбрось монетку.
|
1 2 3 4 5 |
import random res = random.choice([True, False]) print("The Random boolean value is: ") print(res) |
Вывод:
|
1 2 |
The Random boolean value is: True |
Нахождение случайного элемента многомерного массива
Чтобы найти случайный элемент из многомерного массива, используйте функцию numpy.random.choice(), чтобы выбрать случайный элемент из многомерного массива.
Сначала мы находим случайную строку из двумерного массива, а затем, найдя двумерную строку, мы извлекаем случайное число из этой строки.
|
1 2 3 4 5 6 7 8 9 10 11 12 |
import numpy as np array = np.arange(9).reshape(3, 3) print("Printing 2D Array") print(array) print("Choose random row from a 2D array") randomRow = np.random.randint(3, size=1) print(array[randomRow[0], :]) print("Random number from random row is") print(np.random.choice(array[randomRow[0], :])) |
Вывод:
|
1 2 3 4 5 6 7 8 |
Printing 2D Array [[0 1 2] [3 4 5] [6 7 8]] Choose random row from a 2D array [6 7 8] Random number from random row is 7 |
В этом примере мы использовали функцию numpy arange() для создания чисел от 0 до 8, а затем использовали метод reshape() для преобразования его в двумерный массив, а затем распечатали массив.
Затем мы использовали метод np.random.randint(), который находит случайную строку из двумерного массива, а затем использует функцию selection(), чтобы найти случайное число из строки.
