random — generează numere aleatorii

Acest modul implementează un generator de numere pseudo-aleatorii (PRNG). PRNG-ul este un LCG de tip Yasmarang pe 32 de biți; la prima importare extrage o sămânță (seed) de 32 de biți din aceeași sursă hardware folosită de os.urandom(), iar fiecare număr ulterior este o funcție deterministă a acelei sămânțe.

Atenționare

Ieșirea nu este sigură din punct de vedere criptografic – algoritmul este predictibil pornind de la o secvență scurtă de ieșire, iar sămânța inițială poartă doar 32 de biți de entropie. Pentru material de chei, token-uri de sesiune, săruri (salts) pentru parole sau orice altă utilizare sensibilă din punct de vedere al securității, apelați în schimb os.urandom().

Notă

Pentru intervale se folosește următoarea notație:

  • () sunt paranteze de interval deschis și nu includ capetele lor. De exemplu, (0, 1) înseamnă mai mare decât 0 și mai mic decât 1. În notație de mulțimi: (0, 1) = {x | 0 < x < 1}.

  • [] sunt paranteze de interval închis care includ toate punctele lor limită. De exemplu, [0, 1] înseamnă mai mare sau egal cu 0 și mai mic sau egal cu 1. În notație de mulțimi: [0, 1] = {x | 0 <= x <= 1}.

Funcții pentru numere întregi

random.getrandbits(n: int) int

Returnează un număr întreg cu n biți aleatorii (0 <= n <= 32).

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

Returnează un număr întreg aleatoriu din intervalul [a, b].

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

Prima formă returnează un număr întreg aleatoriu din intervalul [0, stop). A doua formă returnează un număr întreg aleatoriu din intervalul [start, stop). A treia formă returnează un număr întreg aleatoriu din intervalul [start, stop) în pași de step. De exemplu, apelarea randrange(1, 10, 2) va returna numere impare între 1 și 9 inclusiv.

Funcții pentru numere în virgulă mobilă

random.random() float

Returnează un număr în virgulă mobilă aleatoriu din intervalul [0.0, 1.0).

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

Returnează un număr N în virgulă mobilă aleatoriu astfel încât a <= N <= b pentru a <= b, și b <= N <= a pentru b < a.

Alte funcții

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

Inițializează modulul generatorului de numere aleatorii cu sămânța n, care ar trebui să fie un număr întreg. Când nu se transmite niciun argument (sau None), PRNG-ul este re-însămânțat din aceeași sursă specifică portului folosită de os.urandom().

random.choice(sequence: Any) Any

Alege și returnează un element la întâmplare din sequence (tuplu, listă sau orice obiect care acceptă operația de indexare).