Сообщить об ошибке.

Случайные числа модуля secrets в Python

Криптографически сильные случайные числа

Модуль secrets обеспечивает доступ к наиболее безопасному источнику случайности, который предоставляет операционная система.

Содержание:


secrets.choice(sequence):

Функция secrets.choice() возвращает случайно выбранный элемент из непустой последовательности.

>>> import string, secrets
>>> alphabet = string.ascii_letters + string.digits
>>> alphabet
# 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
>>> secrets.choice(alphabet)
# 'd'
>>> secrets.choice(alphabet)
# 'W'
>>> secrets.choice(alphabet)
# '0'

secrets.randbelow(n):

Функция secrets.randbelow() возвращает случайное целое число int N в диапазоне 0 <= N < n.

>>> import secrets
>>> secrets.randbelow(50)
# 14
>>> secrets.randbelow(50)
# 46
>>> secrets.randbelow(1000)
# 203
>>> secrets.randbelow(1000)
# 692

secrets.randbits(k):

Функция secrets.randbits() возвращает целое число int состоящее из k случайных бит.

>>> import secrets
>>> secrets.randbits(4)
# 9
>>> secrets.randbits(4)
# 4
>>> secrets.randbits(8)
# 87
>>> secrets.randbits(8)
# 244
>>> secrets.randbits(16)
# 21298
>>> secrets.randbits(16)
# 23019
>>> secrets.randbits(32)
# 1380316947
>>> secrets.randbits(32)
# 922199960

class secrets.SystemRandom():

Класс secrets.SystemRandom() позволяет создать экземпляр генератора, использующим наиболее безопасный источник случайности (энтропии) - ресурсы операционной системы.

Экземпляр класса, в качестве методов, поддерживает большинство функций, определяемых модулем random. Для дополнительных деталей использования смотрите документацию по классу random.SystemRandom().

>>> import secrets
>>> rnd = secrets.SystemRandom()
>>> rnd.VERSION
# 3

# случайное целое число из диапазона
>>> rnd.randint(10, 50)
# 18

# случайное вещественное число из диапазона с шагом
>>> rnd.randrange(50, 250, 16)
# 242

# случайное вещественное число из диапазона от 0 до 1
>>> rnd.random()
# 0.13646742658829447

>>> lst = [10, 25, 30, 45, 50 ,65, 70, 85, 90, 105]
# Выбрать из списка k случайных элементов
>>> rnd.choices(lst, k=5)
# [105, 50, 30, 10, 45]

# Перемешать список на месте
>>> rnd.shuffle(lst)
>>> lst
# [50, 105, 10, 45, 85, 65, 90, 25, 70, 30]

Что бы посмотреть все методы, которые определяет класс secrets.SystemRandom() используйте встроенную функцию dir(). Например:

>>> import secrets
>>> dir(secrets.SystemRandom())