Ce face np.random.default_rng()
np.random.default_rng() creează un obiect Generator, din care ceri numere aleatorii prin metode: integers() pentru întregi, random() pentru numere între 0 și 1, normal() pentru distribuția normală și uniform() pentru numere distribuite uniform într-un interval.
Dacă dai un seed (un număr întreg), generatorul produce aceeași secvență la fiecare rulare: rezultatele se pot reproduce, de exemplu în teste sau în exemple de curs. Fără seed, numerele diferă de la o rulare la alta.
Funcțiile vechi (np.random.seed(), np.random.randint(), np.random.rand()) folosesc o stare globală comună pentru tot programul; orice altă bibliotecă care le apelează schimbă secvența ta. Documentația NumPy recomandă pentru cod nou un generator propriu creat cu default_rng.
Parametri
| Parametru | Descriere |
|---|---|
seed |
Un întreg pentru rezultate reproductibile; None = la fiecare rulare altă secvență. |
low, high |
La integers: intervalul, cu high exclus (inclus cu endpoint=True). La uniform: capetele intervalului. |
size |
Câte valori (un întreg) sau forma tabloului (un tuplu). |
loc, scale |
La normal: media și abaterea standard. |
Ce returnează
default_rng: un obiect numpy.random.Generator. Metodele: un număr sau un tablou de forma size.
Exemple
Exemplul 1: Același seed, aceleași numere
import numpy as np
rng1 = np.random.default_rng(42)
rng2 = np.random.default_rng(42)
print(rng1.integers(1, 7, size=5))
print(rng2.integers(1, 7, size=5))
Rezultat
[1 5 4 3 3]
[1 5 4 3 3]
Exemplul 2: Întregi, numere între 0 și 1, interval uniform
integers(1, 11) dă valori de la 1 la 10 (11 este exclus).
import numpy as np
rng = np.random.default_rng(2026)
print("Note:", rng.integers(1, 11, size=6))
print("Zaruri:", rng.integers(1, 6, size=4, endpoint=True))
print("Între 0 și 1:", rng.random(3).round(3))
print("Prețuri 10-50 lei:", rng.uniform(10, 50, size=3).round(2))
Rezultat
Note: [9 2 1 7 4 5]
Zaruri: [1 3 4 3]
Între 0 și 1: [0.791 0.905 0.177]
Prețuri 10-50 lei: [36.11 21.93 48.68]
Exemplul 3: Distribuția normală
1000 de înălțimi simulate cu media 170 cm și abaterea standard 8 cm; media și abaterea calculate sunt apropiate de valorile cerute.
import numpy as np
rng = np.random.default_rng(7)
inaltimi = rng.normal(loc=170, scale=8, size=1000)
print(inaltimi[:5].round(1))
print("Media:", round(float(inaltimi.mean()), 1))
print("Abaterea std:", round(float(inaltimi.std()), 1))
print(rng.integers(0, 100, size=(2, 3)))
Rezultat
[170. 172.4 167.8 162.9 166.4]
Media: 169.4
Abaterea std: 7.5
[[96 66 36]
[28 77 39]]
Greșeli frecvente
- Te aștepți ca
rng.integers(1, 10)să poată da și 10. Capătul de sus este exclus; foloseșteintegers(1, 11)sauendpoint=True. - Creezi un generator nou cu același seed în interiorul unei bucle: primești la fiecare pas aceleași numere. Creează generatorul o singură dată și folosește-l mai departe.
- Amesteci
np.random.seed()cudefault_rng()și crezi că seed-ul global afectează generatorul. Nu îl afectează: generatorul are propria stare.
Comenzi înrudite
Generator.choice(): Alege la întâmplare elemente dintr-un tablou (choice), amestecă un tablou pe loc (shuffle) sau returnează o copie amestecată (permutation).np.array(): Creează un tablou NumPy (ndarray) dintr-o listă, o listă de liste sau alt obiect asemănător.np.mean(): Calculează media aritmetică (np.mean), mediana (np.median) și media ponderată (np.average cu weights).