Модуль random в Python дает возможность генерировать случайные числа и выбирать случайные элементы из списка. Но давайте обо всем по порядку.
Для некоторых задач нужно использовать элемент случайности. Например, вы решаете, кто из игроков будет ходить белыми шахматами, а кто — черными. Или же работаете над игрой, в которой случайным образом перемешиваются карты в колоде. Фактор случайности пригодится и при проведении розыгрыша с призами.
В этих и многих других случаях вам нужно сгенерировать случайную величину, которая бы предопределяла какое-то событие.
Компьютер не имеет воображения и «придумать» сам ничего не может. Но он может выполнить специальный алгоритм, имитирующий случайную генерацию.
В 1997 году японские ученые Макото Мацумото и Такудзи Нисимура разработали математический алгоритм для генерации случайной величины, который называется вихрь Мерсенна. Хотя этот алгоритм не является криптостойким, он часто используется в программировании для решения простых задач, где вопрос безопасности не критичен.
Генератор случайных чисел в Python работает по этому же алгоритму и реализован в виде подключаемого модуля random. Модули в Python — это отдельные файлы, содержащие нужные функции. Чтобы подключить модуль random, необходимо его импортировать с помощью команды import random.
К модулю random можно подключить очень много функций и использовать их в разных ситуациях. Давайте познакомимся с ними поближе.
Функция | Описание |
seed(A) | Каждому сгенерированному числу соответствует свое зерно выборки A. Это некий параметр, по которому модуль выбирает псевдослучайный результат. Если это зерно не указано, модуль использует значение системного времени. Если же одно и то же значение зерна указать в разных местах кода, вы получите один и тот же псевдослучайный результат. |
getstate() | Запоминает состояние генератора псевдослучайных величин, чтобы использовать впоследствии с функцией setstate(). |
setstate() | Восстанавливает состояние генератора псевдослучайных величин. |
randrange(A, B, C) | Эта функция определяет случайное число, выбранное в заданном диапазоне от A до В с указанным шагом С. Функция может использоваться только с одним аргументом, в этом случае случайная величина будет генерироваться в «полуоткрытом» диапазоне от нуля (включительно) до значения этого аргумента (не включая это число). Это можно записать также как [0, A). Если функция randrange содержит только два аргумента, она работает как randint, генерируя числа в полуоткрытом диапазоне [A, B). |
randint(A, B) | Функция, которая генерирует случайное целое число в заданном диапазоне от A до B. |
choice(имя_списка) | Функция, позволяющая сгенерировать случайный выбор из компонентов заранее описанного списка. |
choices(имя_списка, A) | Эта функция выбирает несколько (A) случайных элементов из списка. |
shuffle(имя_списка) | Функция дает возможность установить элементы списка в случайном порядке. Аргументом функции служит имя_списка. |
sample(имя_списка, A) | Используется для случайного выбора определенного количества элементов из списка, где A — число выбираемых элементов списка. |
random() | Одноименная функция модуля random для генерирования чисел с плавающей точкой в диапазоне от нуля до единицы, не включая единицу. |
uniform(A, B) | Функция, позволяющая получить число с плавающей запятой между числами A и B, где оба числа указаны с плавающей запятой, например, uniform(10.5, 25.5). |
Функции, перечисленные ниже, применяются для решения узкоспециализированных задач, таких как статистические методы и теория вероятности | |
betavariate() | Используется для получения случайного числа с плавающей запятой от 0 до 1 на основе бета-распределения (применяется для статистических расчетов). |
expovariate()
| Генерирует случайное число с плавающей запятой на основе экспоненциального распределения (используется в статистике). |
gammavariate() | Функция создает случайное число с плавающей запятой на основе гамма-распределения (используется для программирования со статистическими методами). |
gauss() | Генерирует случайное число с плавающей запятой на основе распределения Гаусса (используется в теории вероятности). |
lognormvariate() | Генерирует случайное число с плавающей запятой на основе логнормального распределения (используется в задачах, связанных с теорией вероятности). |
normalvariate() | Функция генерирует случайное число с плавающей запятой на основе нормального распределения (используется в задачах по теории вероятности). |
vonmisesvariate() | Создает случайное число с плавающей запятой на основе распределения фон Мизеса (используется в направленной статистике). |
paretovariate() | Генерирует случайное число с плавающей запятой на основе распределения Парето (используется в теориях вероятности). |
weibullvariate() | Генерирует случайное число с плавающей запятой на основе распределения Вейбулла (используется в статистике). |
Предположим, что у нас есть список музыкальных исполнителей (myplaylist) и нам нужно выбрать всего три наименования:
import random #подключаем модуль псевдослучайных функций Python myplaylist = ["Pink Floyd", "Santana", "The Beatles", "ELO", "Mark Knopfler", "KennyG", "Bob Dylan"] #описание плей-листа print(random.sample(myplaylist, k=3)) #случайных выбор трех позиций списка и вывод результата на экран
В любом плеере есть функция случайного воспроизведения. Попробуем реализовать это с помощью Python, перемешивая треки в заранее составленном плей-листе:
import random #подключаем модуль псевдослучайных функций Python myplaylist = ["Pink Floyd", "Santana", "The Beatles", "ELO", "Mark Knopfler", "KennyG", "Bob Dylan"] #описание плей-листа random.shuffle(myplaylist) #перемешиваем список print(myplaylist) #вывод результата на экран
Представим, что нам нужно получить семь раз случайное число в диапазоне от трех до девяти:
import random #подключаем модуль псевдослучайных функций Python for i in range(7): #создаем цикл на семь повторений print(random.randint(3, 9)) #вывод результата
Представим, что нам нужно выбрать случайным образом победителя розыгрыша из списка. С Python это очень удобно реализуется:
import random #подключаем модуль псевдослучайных функций Python members = ["Василий", "Евгений", "Олег", "София", "Инна", "Василиса", "Петр"] #описание списка участников print(random.choice(members)) #выбор и вывод имени победителя на экран
Представим, что нам нужно получить случайное дробное число в диапазоне от 20 до 40:
import random #подключаем модуль псевдослучайных функций Python print(random.uniform(20, 40)) #выбор случайного числа и вывод на экран
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…