random — genera numeri casuali

Questo modulo implementa un generatore di numeri pseudo-casuali (PRNG). Il PRNG è un LCG a 32 bit in stile Yasmarang; alla prima import estrae un seed a 32 bit dalla stessa sorgente hardware usata da os.urandom(), e ogni numero successivo è una funzione deterministica di quel seed.

Avvertimento

L’output non è crittograficamente sicuro – l’algoritmo è prevedibile a partire da una breve sequenza di output, e il seed iniziale porta con sé solo 32 bit di entropia. Per materiale di chiave, token di sessione, salt per password o qualsiasi altro uso sensibile alla sicurezza, chiama invece os.urandom().

Nota

Per gli intervalli viene usata la seguente notazione:

  • () sono parentesi di intervallo aperto e non includono i loro estremi. Per esempio, (0, 1) significa maggiore di 0 e minore di 1. In notazione insiemistica: (0, 1) = {x | 0 < x < 1}.

  • [] sono parentesi di intervallo chiuso che includono tutti i loro punti limite. Per esempio, [0, 1] significa maggiore o uguale a 0 e minore o uguale a 1. In notazione insiemistica: [0, 1] = {x | 0 <= x <= 1}.

Funzioni per interi

random.getrandbits(n: int) int

Restituisce un intero con n bit casuali (0 <= n <= 32).

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

Restituisce un intero casuale nell’intervallo [a, b].

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

La prima forma restituisce un intero casuale dall’intervallo [0, stop). La seconda forma restituisce un intero casuale dall’intervallo [start, stop). La terza forma restituisce un intero casuale dall’intervallo [start, stop) a passi di step. Per esempio, chiamare randrange(1, 10, 2) restituirà numeri dispari tra 1 e 9 inclusi.

Funzioni per float

random.random() float

Restituisce un numero in virgola mobile casuale nell’intervallo [0.0, 1.0).

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

Restituisce un numero in virgola mobile casuale N tale che a <= N <= b per a <= b, e b <= N <= a per b < a.

Altre funzioni

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

Inizializza il modulo del generatore di numeri casuali con il seed n, che deve essere un intero. Quando non viene passato alcun argomento (o None), il PRNG viene ri-inizializzato dalla stessa sorgente specifica della porta usata da os.urandom().

random.choice(sequence: Any) Any

Sceglie e restituisce un elemento a caso da sequence (tupla, lista o qualsiasi oggetto che supporti l’operazione di subscript).