«Генерация случайных чисел слишком важна, чтобы оставлять её на волю случая»
— Роберт Кавью
Note
Python порождает случайные числа на основе формулы, так что они не на самом деле случайные, а, как говорят, псевдослучайные [1]. Этот способ удобен для большинства приложений (кроме онлайновых казино) [2].
Модуль random позволяет генерировать случайные числа. Прежде чем использовать модуль, необходимо подключить его с помощью инструкции:
import random
random.random
random.random() — возвращает псевдослучайное число от 0.0 до 1.0
random.seed
random.seed(<Параметр>) — настраивает генератор случайных чисел на новую последовательность. По умолчанию используется системное время. Если значение параметра будет одиноким, то генерируется одинокое число:
random.uniform
random.uniform(<Начало>, <Конец>) — возвращает псевдослучайное вещественное число в диапазоне от <Начало> до <Конец>:
random.randint
random.randint(<Начало>, <Конец>) — возвращает псевдослучайное целое число в диапазоне от <Начало> до <Конец>:
random.choince
random.choince(<Последовательность>) — возвращает случайный элемент из любой последовательности (строки, списка, кортежа):
random.randrange
random.randrange(<Начало>, <Конец>, <Шаг>) — возвращает случайно выбранное число из последовательности.
random.shuffle
random.shuffle(<Список>) — перемешивает последовательность (изменяется сама последовательность). Поэтому функция не работает для неизменяемых объектов.
Вероятностные распределения
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 символов, в нём должны быть цифры, строчные и прописные буквы. Приготовить такой пароль можно по следующему рецепту:
Этот же скрипт можно записать всего в две строки:
Данная команда является краткой записью цикла for, вместо неё можно было написать так:
Данный цикл повторяется 12 раз и на каждом круге добавляет к строке psw произвольно выбранный элемент из списка.
Ссылки
- Официальная документация по модулю random (англ.)
- Python 3 для начинающих: Модуль random
- Модуль random — генерация случайных чисел
- Безопасность случайных чисел в Python
Сноски
[1] | Википедия: Генератор псевдослучайных чисел |
[2] | Доусон М. Программируем на Python. — СПб.: Питер, 2014. — 416 с.: ил. — 3-е изд |
Мистер Бенджамин сделал все возможное, чтобы помочь мне с моим кредитом, который я использовал, чтобы расширить мой аптечный бизнес. Они были дружелюбны, профессиональны и абсолютно самоотверженны. Я рекомендую всем, кто ищет кредит, связаться с нами. lfdsloans@outlook.com.WhatsApp ... + 19893943740.
ОтветитьУдалить