random — генерація випадкових чисел

Цей модуль реалізує генератор псевдовипадкових чисел (ГПВЧ). ГПВЧ являє собою 32-бітний LCG у стилі Yasmarang; при першому імпорті він отримує одне 32-бітне початкове значення (seed) з того самого апаратного джерела, що й os.urandom(), а кожне наступне число є детермінованою функцією цього seed.

Попередження

Вивід не є криптографічно стійким — алгоритм є передбачуваним за короткою вихідною послідовністю, а початковий seed містить лише 32 біти ентропії. Для ключового матеріалу, токенів сесій, солей паролів або будь-якого іншого чутливого з точки зору безпеки використання слід викликати os.urandom().

Примітка

Для позначення інтервалів використовується така нотація:

  • () — дужки відкритого інтервалу, що не включають свої кінцеві точки. Наприклад, (0, 1) означає більше 0 і менше 1. У теоретико-множинному записі: (0, 1) = {x | 0 < x < 1}.

  • [] — дужки закритого інтервалу, що включають усі граничні точки. Наприклад, [0, 1] означає більше або рівно 0 і менше або рівно 1. У теоретико-множинному записі: [0, 1] = {x | 0 <= x <= 1}.

Функції для цілих чисел

random.getrandbits(n: int) int

Повертає ціле число з n випадковими бітами (0 <= n <= 32).

random.randint(a: int, b: int) int

Повертає випадкове ціле число в діапазоні [a, b].

random.randrange(start: int, stop: int | None = None, step: int = 1) int

Перша форма повертає випадкове ціле число з діапазону [0, stop). Друга форма повертає випадкове ціле число з діапазону [start, stop). Третя форма повертає випадкове ціле число з діапазону [start, stop) з кроком step. Наприклад, виклик randrange(1, 10, 2) повертатиме непарні числа від 1 до 9 включно.

Функції для чисел з плаваючою комою

random.random() float

Повертає випадкове число з плаваючою комою в діапазоні [0.0, 1.0).

random.uniform(a: float, b: float) float

Повертає випадкове число з плаваючою комою N таке, що a <= N <= b при a <= b, і b <= N <= a при b < a.

Інші функції

random.seed(n: int | None = None, /) None

Ініціалізує модуль генератора випадкових чисел із seed n, який має бути цілим числом. Якщо аргумент не передано (або передано None), ГПВЧ повторно ініціалізується з того самого специфічного для порту джерела, яке використовує os.urandom().

random.choice(sequence: Any) Any

Вибирає та повертає один елемент випадковим чином із sequence (кортежу, списку або будь-якого об’єкта, що підтримує операцію індексування).