random.Random și random.SystemRandom în Python

Generatoare independente de numere aleatoare, cu stare proprie sau bazate pe sursa sistemului.

Sintaxă
gen = random.Random(samanta)
sigur = random.SystemRandom()

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 un SystemRandom și te aștepți la rezultate repetabile. Metoda este ignorată.

Comenzi înrudite