Как выбрать случайное значение в Python?

Модуль random в Python содержит набор функций, позволяющих выбрать случайное значение в Python из списков и числовых интервалов. Рассмотрим, как правильно применять наиболее полезные функции модуля random и узнаем, как случайным образом получить:

Кроме того, в заключении статьи мы рассмотрим вопрос, который может оказаться чрезвычайно важным при решении определенных задач:

Как выбрать случайное число типа float из интервала от 0 до 1

Для получения числа с плавающей точкой из интервала от 0 до 1 была создана функция random.random(). Пример работы функции представлен ниже:

import random
num = random.random()
print(num)

Вывод на экран:

0.41997335713303074

Как выбрать целое число из определенного интервала?

Функция random.randint(min, max) , позволяет получить случайное целое значение из интервала от min до max включительно. Например:

import random
# получим случайное число из интервала от 0 до 10 включительно
num = random.randint(0,10)
print(num)

В результате работы кода на экран будет выведено :

8

Как выбрать целое число из определенного интервала с шагом?

Сначала уточним, что значит «выбрать число из интервала с шагом». Для этого рассмотрим пример: при заданном интервале от 10 до 25 с шагом 5, случайный выбор сводится к выбору из чисел 10, 15, 20, 25, то есть шаг сужает число подходящих для выбора значений. С этой задачей успешно справляется функция random.randrange(min, max, step), где min и max — это границы числового интервала, а step — это шаг. Рассмотрим на примере работу функции randrange() в Python:

import random
# получим случайное значение из интервала от 10 до 25 включительно с шагом 5
num = random.randrange(10, 25, 5)
print(num)

Вывод на экран:

15

Как выбрать случайное значение из списка?

Для выбора случайного значения из списка существует функция random.choice(list), где list — список значений для выбора. Рассмотрим работу функции random.choice() на практике:

Пример №1 — выбор случайного значения из строкового списка в Python

import random
# определяем список с названиями цветов 
color_list = ["green", "red", "blue", "white", "black"]
# выбираем случайный цвет из списка color_list
color = random.choice(color_list)
print(color)

Вывод на экран:

green

Пример №2 — выбор случайного значения из числового списка в Python

import random
# определяем числовой список
num_list = [1, 8, 33, 94]
# выбираем случайное число из списка num_list
num = random.choice(num_list)
print(num)

Вывод на экран:

1

Как получить случайные значения из словаря в Python?

Для получения случайной пары ключ-значение из словаря воспользуемся функцией random.choice(list), где list — список. Так как функция choice() принимает в качестве параметра список, а у нас словарь, то сначала с помощью метода items() получим пары словаря (ключ, значение), а затем воспользуемся функцией list(), чтобы преобразовать полученный результат в список. Рассмотрим пример на практике:

import random
# определяем словарь
pets_list = {'cat':'Murka', 'dog':'Sharik', 'parrot':'Kesha'} 
# случайным образом выбираем пару(ключ, значение) из словаря
pet, name = random.choice(list(pets_list.items())) 
print(pet, name)

Вывод на экран:

cat Murka

Если нужно получить только случайное значение ключа, то вместо метода items() следует вызвать метод keys(), после этого преобразовать полученные значения в список и передать функции random.choice() в качестве параметра:

pets_list = {'cat':'Murka', 'dog':'Sharik', 'parrot':'Kesha'} 
pet = random.choice(list(pets_list.keys())) 
print(pet)

Вывод на экран:

parrot

Почему рандомный выбор в Python называют псевдослучайным?

При использовании функций модуля random стоит помнить, что в точных науках не бывает ничего случайного. И даже функции модуля random при выборе «случайного» числа действуют по определенному заранее алгоритму. В «сердце» этого алгоритма лежит числовой параметр, или так называемый seed («зерно» в переводе с англ.). По-умолчанию, Python в качестве seed использует системное время. Поэтому рандомный выбор, совершенный секунду назад, отличается от выбора в текущий момент времени. С одной стороны, это отличное решение, которое, действительно, позволяет получить имитацию случайного выбора и успешно реализуется во многих Python играх и приложениях. Однако, при создании моделей в Data Science, зависимость рандомного выбора от времени может сыграть с разработчиком злую шутку. Ведь для того, чтобы воспроизвести результат, полученный в ходе длительной тренировки модели, необходимо воспроизвести и полученный ранее рандомный выбор, что невозможно в случае зависимости алгоритма для выбора случайных чисел от текущего времени. Поэтому для определенных задач (например, для создания Data Science моделей), можно самостоятельно переопределить стартовое число seed. Тогда в разный момент времени при реализации случайного выбора вы будете получать одинаковые значения, что не только позволит воспроизвести предыдущий результат, но и продемонстрирует псевдослучайность рандомного выбора в Python.

Как же определить seed самостоятельно?

Очень просто! Для этого перед вызовом функции случайного выбора модуля random необходимо ввести строку:

random.seed(«номер»), где «номер» - это любое выбранное вами число.

На практике это выглядит так:

import random

# определим стартовое число для рандомного алгоритма
random.seed(42)
# получим случайное число
num = random.randint(0, 25)
# в результате случайного выбора получим число 20
print(num)

# повторим выбор случайного числа еще раз
random.seed(42)
num = random.randint(0, 25)
# в результате опять получим число 20
print(num)

Вывод на экран:

20
20

Таким образом, сколько бы раз мы не выбирали случайное число из интервала (0, 25) при установленном значении seed=42, полученный результат всегда будет равен 20!

У нас появился Telegram-канал для изучающих Python! Подписывайтесь по ссылке: «Кодим на Python! Вместе «питонить» веселее! 😉

Добавить комментарий