random — generiranje slučajnih brojeva

Ovaj modul implementira generator pseudoslučajnih brojeva (PRNG). PRNG je 32-bitni LCG u stilu Yasmarang; pri prvom uvozu izvlači jedno 32-bitno sjeme iz istog hardverskog izvora koji koristi os.urandom(), a svaki sljedeći broj deterministička je funkcija tog sjemena.

Upozorenje

Izlaz nije kriptografski siguran – algoritam je predvidljiv iz kratkog izlaznog niza, a početno sjeme nosi samo 32 bita entropije. Za materijal za ključeve, tokene sesija, soli lozinki ili bilo koju drugu sigurnosno osjetljivu upotrebu, umjesto toga pozovite os.urandom().

Napomena

Za intervale se koristi sljedeća notacija:

  • () su zagrade otvorenog intervala i ne uključuju svoje krajnje točke. Na primjer, (0, 1) znači veće od 0 i manje od 1. U skupovnoj notaciji: (0, 1) = {x | 0 < x < 1}.

  • [] su zagrade zatvorenog intervala koje uključuju sve svoje granične točke. Na primjer, [0, 1] znači veće ili jednako 0 i manje ili jednako 1. U skupovnoj notaciji: [0, 1] = {x | 0 <= x <= 1}.

Funkcije za cijele brojeve

random.getrandbits(n: int) int

Vraća cijeli broj s n slučajnih bitova (0 <= n <= 32).

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

Vraća slučajni cijeli broj u rasponu [a, b].

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

Prvi oblik vraća slučajni cijeli broj iz raspona [0, stop). Drugi oblik vraća slučajni cijeli broj iz raspona [start, stop). Treći oblik vraća slučajni cijeli broj iz raspona [start, stop) u koracima od step. Na primjer, pozivanje randrange(1, 10, 2) vratit će neparne brojeve između 1 i 9 uključivo.

Funkcije za brojeve s pomičnim zarezom

random.random() float

Vraća slučajni broj s pomičnim zarezom u rasponu [0.0, 1.0).

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

Vraća slučajni broj s pomičnim zarezom N takav da je a <= N <= b za a <= b, i b <= N <= a za b < a.

Ostale funkcije

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

Inicijalizira modul generatora slučajnih brojeva sa sjemenom n, koje bi trebalo biti cijeli broj. Kada se ne proslijedi nijedan argument (ili None), PRNG se ponovno sije iz istog izvora specifičnog za priključak koji koristi os.urandom().

random.choice(sequence: Any) Any

Bira i vraća jednu nasumičnu stavku iz sequence (n-torke, liste ili bilo kojeg objekta koji podržava operaciju indeksiranja).