Generación de números seudoaleatorios

Muestreo en Python

James Chapman

Curriculum Manager, DataCamp

¿Qué significa aleatorio?

{adjective} hecho, realizado, ocurrido o elegido sin método ni decisión consciente.

1 Oxford Languages
Muestreo en Python

Números verdaderamente aleatorios

  • Generados por procesos físicos, como lanzar monedas
  • Hotbits usa desintegración radiactiva
  • RANDOM.ORG usa ruido atmosférico
  • La verdadera aleatoriedad es costosa
1 https://www.fourmilab.ch/hotbits 2 https://www.random.org
Muestreo en Python

Generación de números seudoaleatorios

  • La generación seudoaleatoria es barata y rápida
  • El siguiente número “aleatorio” se calcula a partir del anterior
  • El primer número “aleatorio” se calcula desde una semilla
  • La misma semilla produce los mismos números
Muestreo en Python

Ejemplo de generación seudoaleatoria

seed = 1
calc_next_random(seed)
3
calc_next_random(3)
2
calc_next_random(2)
6
Muestreo en Python

Funciones para generar números aleatorios

  • Anteponer numpy.random, p. ej., numpy.random.beta()
function distribution function distribution
.beta Beta .hypergeometric Hipergeométrica
.binomial Binomial .lognormal Lognormal
.chisquare Ji-cuadrado .negative_binomial Binomial negativa
.exponential Exponencial .normal Normal
.f F .poisson Poisson
.gamma Gamma .standard_t t
.geometric Geométrica .uniform Uniforme
Muestreo en Python

Visualizar números aleatorios

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

Muestreo en Python

Semillas de números aleatorios

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 ])
Muestreo en Python

Usar otra semilla

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])
Muestreo en Python

¡Vamos a practicar!

Muestreo en Python

Preparing Video For Download...