Generarea numerelor pseudo-aleatoare

Eșantionare în Python

James Chapman

Curriculum Manager, DataCamp

Ce înseamnă aleator?

{adjectiv} realizat, efectuat, produs sau ales fără metodă sau decizie conștientă.

1 Oxford Languages
Eșantionare în Python

Numere cu adevărat aleatoare

  • Generate din procese fizice, precum aruncarea monedelor
  • Hotbits folosește dezintegrarea radioactivă
  • RANDOM.ORG folosește zgomotul atmosferic
  • Adevărata aleatorizare este costisitoare
1 https://www.fourmilab.ch/hotbits 2 https://www.random.org
Eșantionare în Python

Generarea numerelor pseudo-aleatoare

  • Generarea pseudo-aleatoare este ieftină și rapidă
  • Următorul număr „aleator" este calculat din cel anterior
  • Primul număr „aleator" este calculat dintr-o sămânță
  • Aceeași sămânță produce aceleași numere aleatoare
Eșantionare în Python

Exemplu de generare pseudo-aleatoare

seed = 1
calc_next_random(seed)
3
calc_next_random(3)
2
calc_next_random(2)
6
Eșantionare în Python

Funcții de generare a numerelor aleatoare

  • Se prefixează cu numpy.random, ex. numpy.random.beta()
funcție distribuție funcție distribuție
.beta Beta .hypergeometric Hipergeometrică
.binomial Binomială .lognormal Lognormală
.chisquare Chi-pătrat .negative_binomial Binomială negativă
.exponential Exponențială .normal Normală
.f F .poisson Poisson
.gamma Gamma .standard_t t
.geometric Geometrică .uniform Uniformă
Eșantionare în Python

Vizualizarea numerelor aleatoare

randoms = np.random.beta(a=2, b=2, size=5000)
randoms
array([0.6208281 , 0.73216171, 0.44298403, ..., 
       0.13411873, 0.52198411, 0.72355098])
plt.hist(randoms, bins=np.arange(0, 1, 0.05))
plt.show()

hist-beta.png

Eșantionare în Python

Semințele numerelor aleatoare

np.random.seed(20000229)
np.random.normal(loc=2, scale=1.5, size=2)
array([-0.59030264, 1.87821258])
np.random.normal(loc=2, scale=1.5, size=2)
array([2.52619561, 4.9684949 ])
np.random.seed(20000229)
np.random.normal(loc=2, scale=1.5, size=2)
array([-0.59030264, 1.87821258])
np.random.normal(loc=2, scale=1.5, size=2)
array([2.52619561, 4.9684949 ])
Eșantionare în Python

Utilizarea unei semințe diferite

np.random.seed(20000229)
np.random.normal(loc=2, scale=1.5, size=2)
array([-0.59030264, 1.87821258])
np.random.normal(loc=2, scale=1.5, size=2)
array([2.52619561, 4.9684949 ])
np.random.seed(20041004)
np.random.normal(loc=2, scale=1.5, size=2)
array([1.09364337, 4.55285159])
np.random.normal(loc=2, scale=1.5, size=2)
array([2.67038916, 2.36677492])
Eșantionare în Python

Să exersăm!

Eșantionare în Python

Preparing Video For Download...