random.seed(), getstate() și setstate() în Python

Fixează punctul de pornire al generatorului, ca rezultatele aleatoare să se poată repeta.

Sintaxă
random.seed(a=None, version=2)
stare = random.getstate()
random.setstate(stare)

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