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