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).