Ce face random.seed(), getstate() și setstate()
Numerele din modulul random sunt pseudo-aleatoare: provin dintr-un algoritm determinist pornit de la o „sămânță”. seed(valoare) fixează sămânța, deci aceeași valoare produce mereu același șir de numere. Este esențial pentru teste și simulări reproductibile. Fără argument, sămânța vine din sursa de aleatoriu a sistemului.
getstate() salvează starea curentă a generatorului, iar setstate() o restaurează, ca să poți relua exact aceeași secvență de la un punct dat.
Parametri
| Parametru | Descriere |
|---|---|
a |
Sămânța: întreg, text, bytes. None = aleatoare. |
stare |
Pentru setstate: obiectul returnat de getstate. |
Ce returnează
getstate: un obiect stare. Celelalte: None.
Exemple
Exemplul 1: Aceeași sămânță, aceleași numere
import random
random.seed("dexblog")
a = [random.randint(1, 100) for _ in range(5)]
random.seed("dexblog")
b = [random.randint(1, 100) for _ in range(5)]
print(a, a == b)
stare = random.getstate()
x = random.random()
random.setstate(stare)
print(x == random.random())
Rezultat
[21, 11, 7, 20, 5] True
True
Greșeli frecvente
- Apelezi
random.seed(1)în interiorul buclei, înainte de fiecare număr, și obții mereu aceeași valoare.
Comenzi înrudite
random.random() și random.uniform(): Generează un număr zecimal aleator: între 0 și 1, sau între două valori date.random.Random și random.SystemRandom: Generatoare independente de numere aleatoare, cu stare proprie sau bazate pe sursa sistemului.random.randint() și random.randrange(): Generează un număr întreg aleator dintr-un interval.