random — generowanie liczb losowych

Ten moduł implementuje generator liczb pseudolosowych (PRNG). PRNG jest 32-bitowym generatorem LCG w stylu Yasmarang; przy pierwszym imporcie pobiera jedno 32-bitowe ziarno z tego samego źródła sprzętowego, którego używa os.urandom(), a każda kolejna liczba jest deterministyczną funkcją tego ziarna.

Ostrzeżenie

Wynik nie jest bezpieczny kryptograficznie – algorytm jest przewidywalny na podstawie krótkiej sekwencji wyjściowej, a początkowe ziarno niesie tylko 32 bity entropii. Do materiału kluczowego, tokenów sesji, soli haseł lub innych zastosowań wrażliwych na bezpieczeństwo wywołuj zamiast tego os.urandom().

Informacja

Dla przedziałów stosowana jest następująca notacja:

  • () to nawiasy przedziału otwartego i nie obejmują swoich punktów krańcowych. Na przykład (0, 1) oznacza większe niż 0 i mniejsze niż 1. W notacji zbiorów: (0, 1) = {x | 0 < x < 1}.

  • [] to nawiasy przedziału domkniętego, które obejmują wszystkie swoje punkty graniczne. Na przykład [0, 1] oznacza większe lub równe 0 i mniejsze lub równe 1. W notacji zbiorów: [0, 1] = {x | 0 <= x <= 1}.

Funkcje dla liczb całkowitych

random.getrandbits(n: int) int

Zwraca liczbę całkowitą o n losowych bitach (0 <= n <= 32).

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

Zwraca losową liczbę całkowitą z zakresu [a, b].

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

Pierwsza postać zwraca losową liczbę całkowitą z zakresu [0, stop). Druga postać zwraca losową liczbę całkowitą z zakresu [start, stop). Trzecia postać zwraca losową liczbę całkowitą z zakresu [start, stop) w krokach co step. Na przykład wywołanie randrange(1, 10, 2) zwróci liczby nieparzyste od 1 do 9 włącznie.

Funkcje dla liczb zmiennoprzecinkowych

random.random() float

Zwraca losową liczbę zmiennoprzecinkową z zakresu [0.0, 1.0).

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

Zwraca losową liczbę zmiennoprzecinkową N taką, że a <= N <= b dla a <= b oraz b <= N <= a dla b < a.

Pozostałe funkcje

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

Inicjalizuje moduł generatora liczb losowych ziarnem n, które powinno być liczbą całkowitą. Gdy nie przekazano żadnego argumentu (lub None), PRNG jest ponownie zaszczepiany z tego samego źródła specyficznego dla portu, którego używa os.urandom().

random.choice(sequence: Any) Any

Wybiera i zwraca losowo jeden element z sequence (krotki, listy lub dowolnego obiektu obsługującego operację indeksowania).