Модуль random
Модуль random предоставляет функции для генерации случайных чисел, букв, случайного выбора элементов последовательности.
random.seed([X], version=2) — инициализация генератора случайных чисел. Если X не указан, используется системное время.
random.getstate() — внутреннее состояние генератора.
random.setstate(state) — восстанавливает внутреннее состояние генератора. Параметр state должен быть получен функцией getstate().
random.getrandbits(N) — возвращает N случайных бит.
random.randrange(start, stop, step) — возвращает случайно выбранное число из последовательности.
random.randint(A, B) — случайное целое число N, A ≤ N ≤ B.
random.choice(sequence) — случайный элемент непустой последовательности.
random.shuffle(sequence, [rand]) — перемешивает последовательность (изменяется сама последовательность). Поэтому функция не работает для неизменяемых объектов.
random.sample(population, k) — список длиной k из последовательности population.
random.random() — случайное число от 0 до 1.
random.uniform(A, B) — случайное число с плавающей точкой, A ≤ N ≤ B (или B ≤ N ≤ A).
random.triangular(low, high, mode) — случайное число с плавающей точкой, low ≤ N ≤ high. Mode — распределение.
random.betavariate(alpha, beta) — бета-распределение. alpha>0, beta>0. Возвращает от 0 до 1.
random.expovariate(lambd) — экспоненциальное распределение. lambd равен 1/среднее желаемое. Lambd должен быть отличным от нуля. Возвращаемые значения от 0 до плюс бесконечности, если lambd положительно, и от минус бесконечности до 0, если lambd отрицательный.
random.gammavariate(alpha, beta) — гамма-распределение. Условия на параметры alpha>0 и beta>0.
random.gauss(значение, стандартное отклонение) — распределение Гаусса.
random.lognormvariate(mu, sigma) — логарифм нормального распределения. Если взять натуральный логарифм этого распределения, то вы получите нормальное распределение со средним mu и стандартным отклонением sigma. mu может иметь любое значение, и sigma должна быть больше нуля.
random.normalvariate(mu, sigma) — нормальное распределение. mu — среднее значение, sigma — стандартное отклонение.
random.vonmisesvariate(mu, kappa) — mu — средний угол, выраженный в радианах от 0 до 2π, и kappa — параметр концентрации, который должен быть больше или равен нулю. Если каппа равна нулю, это распределение сводится к случайному углу в диапазоне от 0 до 2π.
random.paretovariate(alpha) — распределение Парето.
random.weibullvariate(alpha, beta) — распределение Вейбулла.
Все довольно просто, и теперь вы можете генерировать случайные числа и последовательности. Удачи в ваших изысканиях!
Для вставки кода на Python в комментарий заключайте его в теги
Python 3: Генерация случайных чисел (модуль random)¶
Python порождает случайные числа на основе формулы, так что они не на самом деле случайные, а, как говорят, псевдослучайные [1]. Этот способ удобен для большинства приложений (кроме онлайновых казино) [2].
| [1] | Википедия: Генератор псевдослучайных чисел |
| [2] | Доусон М. Программируем на Python. — СПб.: Питер, 2014. — 416 с.: ил. — 3-е изд |
Модуль random позволяет генерировать случайные числа. Прежде чем использовать модуль, необходимо подключить его с помощью инструкции:
import random
random.random¶
random.random() — возвращает псевдослучайное число от 0.0 до 1.0
random.random() 0.07500815468466127
random.seed¶
random.seed() — настраивает генератор случайных чисел на новую последовательность. По умолчанию используется системное время. Если значение параметра будет одиноким, то генерируется одинокое число:
random.seed(20) random.random() 0.9056396761745207 random.random() 0.6862541570267026 random.seed(20) random.random() 0.9056396761745207 random.random() 0.7665092563626442
random.uniform¶
random.uniform(, ) — возвращает псевдослучайное вещественное число в диапазоне от до :
random.uniform(0, 20) 15.330185127252884 random.uniform(0, 20) 18.092324756265473
random.randint¶
random.randint(, ) — возвращает псевдослучайное целое число в диапазоне от до :
random.randint(1,27) 9 random.randint(1,27) 22
random.choince¶
random.choince() — возвращает случайный элемент из любой последовательности (строки, списка, кортежа):
random.choice('Chewbacca') 'h' random.choice([1,2,'a','b']) 2 random.choice([1,2,'a','b']) 'a'
random.randrange¶
random.randrange(, , ) — возвращает случайно выбранное число из последовательности.
random.shuffle¶
random.shuffle() — перемешивает последовательность (изменяется сама последовательность). Поэтому функция не работает для неизменяемых объектов.
List = [1,2,3,4,5,6,7,8,9] List [1, 2, 3, 4, 5, 6, 7, 8, 9] random.shuffle(List) List [6, 7, 1, 9, 5, 8, 3, 2, 4]
Вероятностные распределения¶
random.triangular(low, high, mode) — случайное число с плавающей точкой, low ≤ N ≤ high . Mode - распределение.
random.betavariate(alpha, beta) — бета-распределение. alpha>0 , beta>0 . Возвращает от 0 до 1.
random.expovariate(lambd) — экспоненциальное распределение. lambd равен 1/среднее желаемое. Lambd должен быть отличным от нуля. Возвращаемые значения от 0 до плюс бесконечности, если lambd положительно, и от минус бесконечности до 0, если lambd отрицательный.
random.gammavariate(alpha, beta) — гамма-распределение. Условия на параметры alpha>0 и beta>0 .
random.gauss(значение, стандартное отклонение) — распределение Гаусса.
random.lognormvariate(mu, sigma) — логарифм нормального распределения. Если взять натуральный логарифм этого распределения, то вы получите нормальное распределение со средним mu и стандартным отклонением sigma . mu может иметь любое значение, и sigma должна быть больше нуля.
random.normalvariate(mu, sigma) — нормальное распределение. mu — среднее значение, sigma — стандартное отклонение.
random.vonmisesvariate(mu, kappa) — mu — средний угол, выраженный в радианах от 0 до 2π, и kappa — параметр концентрации, который должен быть больше или равен нулю. Если каппа равна нулю, это распределение сводится к случайному углу в диапазоне от 0 до 2π.
random.paretovariate(alpha) — распределение Парето.
random.weibullvariate(alpha, beta) — распределение Вейбулла.
Примеры¶
Генерация произвольного пароля¶
Хороший пароль должен быть произвольным и состоять минимум из 6 символов, в нём должны быть цифры, строчные и прописные буквы. Приготовить такой пароль можно по следующему рецепту:
import random # Щепотка цифр str1 = '123456789' # Щепотка строчных букв str2 = 'qwertyuiopasdfghjklzxcvbnm' # Щепотка прописных букв. Готовится преобразованием str2 в верхний регистр. str3 = str2.upper() print(str3) # Выведет: 'QWERTYUIOPASDFGHJKLZXCVBNM' # Соединяем все строки в одну str4 = str1+str2+str3 print(str4) # Выведет: '123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM' # Преобразуем получившуюся строку в список ls = list(str4) # Тщательно перемешиваем список random.shuffle(ls) # Извлекаем из списка 12 произвольных значений psw = ''.join([random.choice(ls) for x in range(12)]) # Пароль готов print(psw) # Выведет: '1t9G4YPsQ5L7'
Этот же скрипт можно записать всего в две строки:
import random print(''.join([random.choice(list('123456789qwertyuiopasdfghjklzxc vbnmQWERTYUIOPASDFGHJKLZXCVBNM')) for x in range(12)]))
Данная команда является краткой записью цикла for, вместо неё можно было написать так:
import random psw = '' # предварительно создаем переменную psw for x in range(12): psw = psw + random.choice(list('123456789qwertyuiopasdfgh jklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM')) print(psw) # Выведет: Ci7nU6343YGZ
Данный цикл повторяется 12 раз и на каждом круге добавляет к строке psw произвольно выбранный элемент из списка.
Ссылки¶
- Официальная документация по модулю random (англ.)
- Python 3 для начинающих: Модуль random
- Модуль random — генерация случайных чисел
- Безопасность случайных чисел в Python
Элемент случайности: как использовать модуль random в Python

Модуль random в Python дает возможность генерировать случайные числа и выбирать случайные элементы из списка. Но давайте обо всем по порядку.
Курс Англійської.
Обери викладача за своїми вимогами серед 1100+ фахівців в Englishdom.
Для некоторых задач нужно использовать элемент случайности. Например, вы решаете, кто из игроков будет ходить белыми шахматами, а кто — черными. Или же работаете над игрой, в которой случайным образом перемешиваются карты в колоде. Фактор случайности пригодится и при проведении розыгрыша с призами.
В этих и многих других случаях вам нужно сгенерировать случайную величину, которая бы предопределяла какое-то событие.
Компьютер не имеет воображения и «придумать» сам ничего не может. Но он может выполнить специальный алгоритм, имитирующий случайную генерацию.
В 1997 году японские ученые Макото Мацумото и Такудзи Нисимура разработали математический алгоритм для генерации случайной величины, который называется вихрь Мерсенна. Хотя этот алгоритм не является криптостойким, он часто используется в программировании для решения простых задач, где вопрос безопасности не критичен.
Курс С++ для GameDevData analyst.
Комплексний курс, який навчить кодити на C++ з нуля, отримай необхідні навички щоб заволодіти затребуваною мовою програмування.
Генератор случайных чисел в Python работает по этому же алгоритму и реализован в виде подключаемого модуля random. Модули в Python — это отдельные файлы, содержащие нужные функции. Чтобы подключить модуль random, необходимо его импортировать с помощью команды import random.
К модулю random можно подключить очень много функций и использовать их в разных ситуациях. Давайте познакомимся с ними поближе.
Функции модуля random
| Функция | Описание |
| seed(A) | Каждому сгенерированному числу соответствует свое зерно выборки A. Это некий параметр, по которому модуль выбирает псевдослучайный результат. Если это зерно не указано, модуль использует значение системного времени. Если же одно и то же значение зерна указать в разных местах кода, вы получите один и тот же псевдослучайный результат. |
| getstate() | Запоминает состояние генератора псевдослучайных величин, чтобы использовать впоследствии с функцией setstate(). |
| setstate() | Восстанавливает состояние генератора псевдослучайных величин. |
| randrange(A, B, C) | Эта функция определяет случайное число, выбранное в заданном диапазоне от A до В с указанным шагом С. Функция может использоваться только с одним аргументом, в этом случае случайная величина будет генерироваться в «полуоткрытом» диапазоне от нуля (включительно) до значения этого аргумента (не включая это число). |
Генерация случайных чисел: примеры использования
Составление плей-листа
Предположим, что у нас есть список музыкальных исполнителей (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)) #выбор случайного числа и вывод на экран
Курс Англійської.
Навчання для різних цілей та рівнів: робоча англійська, початковий рівень, курси для дітей та підлітків.
Как работать с модулем random в Python
Модуль random в Python предоставляет функции для генерации случайных чисел. В этой статье мы рассмотрим основные возможности этого модуля и приведем примеры их использования.
Импортирование модуля
Чтобы начать работать с модулем random , вам нужно сначала его импортировать:
import random
Генерация случайных чисел
randint(a, b)
Функция randint(a, b) возвращает случайное целое число из диапазона [a, b] (включая оба конца).
random_number = random.randint(1, 10) print(random_number) # Выводит случайное число от 1 до 10
random()
Функция random() возвращает случайное число с плавающей точкой в диапазоне [0.0, 1.0) (включая 0.0, но не 1.0).
random_float = random.random() print(random_float) # Выводит случайное число от 0.0 до 1.0
uniform(a, b)
Функция uniform(a, b) возвращает случайное число с плавающей точкой из диапазона [a, b] (включая оба конца).
random_float = random.uniform(1, 10) print(random_float) # Выводит случайное число от 1.0 до 10.0
Выбор случайного элемента из списка
choice(seq)
Функция choice(seq) возвращает случайный элемент из последовательности (списка, кортежа, строки и т.д.).
colors = ['red', 'blue', 'green', 'yellow'] random_color = random.choice(colors) print(random_color) # Выводит случайный цвет из списка
Python-разработчик: новая работа через 9 месяцев
Получится, даже если у вас нет опыта в IT

Перемешивание элементов списка
shuffle(lst)
Функция shuffle(lst) перемешивает элементы списка lst в случайном порядке.
numbers = [1, 2, 3, 4, 5] random.shuffle(numbers) print(numbers) # Выводит список чисел в случайном порядке
Заключение
Модуль random предлагает множество других функций для генерации случайных чисел и работы с последовательностями. В этой статье мы рассмотрели только основные и наиболее часто используемые функции. Более подробную информацию о модуле random и его возможностях можно найти в официальной документации Python.
Удачного изучения Python и успехов вам в разработке!
