Модуль secrets
обеспечивает доступ к наиболее безопасному источнику случайности, который предоставляет операционная система.
secrets.choice()
,secrets.randbelow()
,secrets.randbits()
,secrets.SystemRandom()
.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())