Ce face random.Random și random.SystemRandom
Funcțiile modulului (random.randint, random.choice…) folosesc un singur generator comun. random.Random(samanta) creează un generator separat, cu propria stare: util când mai multe părți ale programului au nevoie de secvențe reproductibile, independente una de alta. Are aceleași metode ca modulul.
SystemRandom folosește sursa de aleatoriu a sistemului de operare (os.urandom), deci rezultatele nu pot fi reproduse, iar seed() nu are efect. Este potrivit pentru scopuri de securitate, la fel ca modulul secrets.
Parametri
| Parametru | Descriere |
|---|---|
x |
Opțional. Sămânța generatorului. |
Ce returnează
Un obiect generator.
Exemple
Exemplul 1: Generatoare independente
import random
joc = random.Random(123)
harta = random.Random(123)
print(joc.randint(1, 100), harta.randint(1, 100))
print(joc.choice("abc"), harta.choice("abc"))
Rezultat
7 7
b b
Exemplul 2: SystemRandom
import random
sigur = random.SystemRandom()
print(sigur.randint(100000, 999999))
Rezultat posibil (diferă la fiecare rulare)
482915
Greșeli frecvente
- Apelezi
seed()pe unSystemRandomși te aștepți la rezultate repetabile. Metoda este ignorată.
Comenzi înrudite
random.seed(), getstate() și setstate(): Fixează punctul de pornire al generatorului, ca rezultatele aleatoare să se poată repeta.random.randint() și random.randrange(): Generează un număr întreg aleator dintr-un interval.os.urandom(): Returnează n octeți aleatori, potriviți pentru criptografie.