Está en la página 1de 19

Historia de los Números Pseudo-Aleatorios

 Desde los inicios de la computación en la década de los años 40 en el S. XX, se


planteó la necesidad de mecanismos computacionales y no físicos (dados, cartas,
balotas, etc.) para llevar a cabo generación aleatoria.
 Rand Corporation en 1947 creó su propia máquina que generó 1 millón de números
aleatorios a partir de impulsos electrónicos con una rueda de ruleta (famosa tabla
RAND del libro A Million Random Digits with 100,000 Normal Deviates).
 Luego, en 1957, el famoso equipo británico de la WWII (Bletchey Park) que había
decodificado los mensajes alemanes, creó a Ernie.

Este Ernie NO ! This is Ernie!


Historia de los Números Pseudo-Aleatorios
 Ernie (electronic random number indicator equipment) fue creada para elegir
ganadores de una especie de lotería en el Reino Unido que buscaba incentivar
ahorros en la ciudadanía (programas de ahorro con premios como incentivos, tal y
como algunos certificados de depósito a término fijo, CDT )
 Ernie operaba con tubos de neón a los que se les aplicaba altos voltajes para que los
átomos chocaran aleatoriamente con los neutrones y generaran pulsos que eran
leídos computacionalmente a través de válvulas, circuitos y algoritmos.
 Ernie generaba números aleatorios inconsistentemente repetibles y era imposible
probar sus propiedades.
 Sin embargo, los generadores de números pseudo-aleatorios (PRNG) habían sido ya
desarrollados con funciones determinísticas matemáticas que iteraban
consecutivamente a partir de una semilla inicial (initial seed) y donde una semilla
dependía de la anterior (John Von Neumann en 1949 con Mid-Square y Lehmer en
1951 con LCG).
Historia de los Números Pseudo-Aleatorios
 Los PRNG son denominados así porque no son realmente números aleatorios
(pseudo=falso), dado que si se conoce el algoritmo y los valores de sus parámetros,
se puede repetir la misma secuencia cuantas veces sea necesario.
 Los PRNG, sin embargo, deben imitar la generación de secuencias aleatorias (“lucir
aleatorios”)
 Un algoritmo PRNG en simulación debe ser de rápida ejecución, portable, con
ciclos largos (la longitud de un ciclo se determina con el número de iteraciones antes
de empezar a repetir la secuencia)
 Un algoritmo PRNG también debe ser replicable sin importar el sistema que está
siendo simulado para efectos de verificación de los modelos (debugging) y con el
propósito de comparar sistemas sin que la aleatoriedad sea parte de la variabilidad
entre los dos sistemas.
Algoritmo Mid-Square de Von Neumann
Principio básico:
1) Se escoge una semilla inicial (número entero de 4 o más
dígitos)
2) Se eleva al cuadrado la semilla
3) Se extraen los dígitos centrales como el número aleatorio y
(Imagen Wikipedia)
nueva semilla para la siguiente iteración (paso 2)

 Si la semilla es de 4 dígitos, se espera que la potencia al cuadrado sea de 8 dígitos,


si no se completa con ceros a la izquierda, y se extraen los 4 dígitos centrales.
 Si la semilla es de 6 dígitos se espera que la potencia al cuadrado sea de 12 dígitos,
se completaría con ceros de ser necesario, y se extraen los 6 dígitos centrales como
nueva semilla
Algoritmo Mid-Square de Von Neumann

Programado en
Excel con funciones
de texto

Generación Aleatoria 0 y 1
que puede degenerarse (se
queda en cero)
Algoritmos Generadores 0 y 1
Adicional al rango entre 0 y 1, un generador debe cumplir con dos propiedades
fundamentales: uniformidad e independencia

Razones de las Propiedades


 Rango de 0 a 1: para representar la probabilidad acumulada de la variable aleatoria
a ser generada.
 Uniformidad: cada valor real generado entre 0 y 1 debe tener la misma probabilidad
para así evitar sesgos indebidos en el rango de la variable a simular y termine
deformando la distribución de probabilidades a simular.
 Independencia: la secuencia (o stream) de los números generados no puede
evidenciar que un número sea predeterminado por un número anterior, la
independencia asegura que la representación de una distribución no tenga patrones o
ciclos que influyan en los resultados de la simulación
Algoritmos Generadores 0 y 1
Propiedades Adicionales

 Ciclos Largos: Un modelo de simulación al ser replicado n veces, podría necesitar


cientos de miles o millones de números generados sin que se repita el ciclo, por
ende, la longitud del ciclo debe ser supremamente larga.
 Evitar Tendencias: cuando la secuencia o stream de números generados exhibe
varios números consecutivos por encima o por debajo de la mediana, o números
consecutivos mayores o menores que los números adyacentes. Por ello, las pruebas
de corridas (run tests) evidencian si la existencia de estas tendencias comprometen
o no la independencia.
 Máxima densidad: a la medida que los números tengan más decimales, mayor será
la densidad de generación.
Algoritmo LCG de Lehmer
(Linear congruential generator)
Lehmer se apoyó en una función matemática simple que computacionalmente es muy
funcional y rápida: en el residuo de una división !!!

Estableció los siguientes parámetros:


a = multiplicador La función “mod”
c = incremento 𝑆𝑖 = (𝑎𝑆𝑖−1 + 𝑐) 𝑚𝑜𝑑 𝑚 es el residuo
S0 = semilla inicial 𝑆𝑖 calculada en Si,
m = divisor o módulo 𝑅𝑖 = también llamada
𝑚
semilla o “seed”
Algoritmo LCG

Representación en Excel donde los parámetros escogidos


permiten un ciclo completo (se generan todos los residuos
posibles entre 0 y m-1=17). Sin embargo la longitud o
período del ciclo es muy corto = 18
Algoritmo LCG Se comprueba Uniformidad en Statfit
con 8000 números (máximo permitido
Se eligen parámetros (i.e. valor de en el software)
m) que amplían ostensiblemente la
longitud del ciclo
Algoritmo LCG

Se evidencia su
independencia
Modificaciones al Algoritmo LCG
 Al suprimir el parámetro del incremento (C=0), se estableció el MLCG (Multiplicative,
Learmonth & Lewis [1973]), lo cual ahorra el cálculo de la suma y produce un período
completo (m-1), si se escogen los parámetros a=16,807 y m = 2ˆ31 - 1 (equivalente a
2,147,483,647), el cual representa el mayor número primo menor a 2ˆ32 (pensado para
los computadores de 32 bits). Su período sería mayor a dos mil millones de números
(2*10ˆ9).
 Otro MLCG de período similar y mejores estadísticas es con el parámetro a =
630,360,016. Muchos autores aseguran sin embargo, que las propiedades de los MLCG
se conservan solo en los primeros 10,000 números aleatorios.
 En estos algoritmos se recomienda escoger números primos para las semillas iniciales
 Los MRG (Multiple recursive generator) son extensiones de los MLCG donde una
semilla ya no depende de solo la semilla anterior, sino de dos o más semillas.
Modificaciones al Algoritmo LCG
 Los MRG pueden prolongar los
períodos y mejorar las estadísticas
de los MLCG al apelar a mayor
recursividad (más semillas)
 En computadores de 48 y 64 bits,
se puede lograr un período de 2.6 x
10^18, sí se usa m=2,147,483,647
con multiplicadores como 26,403,
33,236, 36,673, 40,851 o 43,693.

Feldman & Valdes


Compuestos (composite)
 Los compuestos recurren a la
combinación de múltiples semillas
de diferentes generadores, cada uno
pudiendo ser de baja calidad pero
al ser combinados generan buenas
estadísticas (denominado
MRG32k3a).
 L’Ecuyer logra un período de 3.1 x
10^57 combinando dos MRGs, y
require de 6 semillas iniciales.

Feldman & Valdes


Compuestos (composite)
 Shuffle (MacLaren & Marsaglia, 1965) es un compuesto donde un LCG genera
R~U(0,1) y otro LCG genera valores enteros entre 1 y k, con el segundo LCG se van
escogiendo las posiciones del 1ro y se forma el vector definitive de números aleatorios.

 Excel utilizó en sus inicios métodos compuestos, pero desde 2010, se movió, al igual
que la mayoría de lenguajes de programación, a uno denomindado Mersenne Twister
ubicado en la categoría LFSR o GFSR (linear feedback shift register o generalized),
siendo algoritmos criptográficos (también llamados Tausworthe) que trabajan con
secuencias binarias y recurrencias sobre estas.
Streams
 En aleatoriedad, “Stream” es el término utilizado para determinar sub-secuencias de
generación, reservadas para uso exclusivo de una sola variable aleatoria.
 Si no existieran los streams, se corre el riesgo de perder la uniformidad y la independencia
de la secuencia cuando los números aleatorios son asignados a cada variable.

En este ejemplo, a la
variable aleatoria 1 se le fue
actualizando su generación
con valores solo entre 0.3 y
0.6, mientras que a la
variable aleatoria 2 solo con
valores entre 0 y 0.3, y entre
0.6 y 1. En resumen, la
representación de cada
variable carecerá de
uniformidad e independencia
Uso de Streams en Flexsim
Uso de Streams en Flexsim

También podría gustarte