Generadores Congruenciales: Conceptos Previos
Generadores Congruenciales: Conceptos Previos
Conceptos previos
Donde:
𝑎, 𝑒𝑠 𝑒𝑙 𝑑𝑖𝑣𝑖𝑑𝑒𝑛𝑑𝑜
𝑏, 𝑒𝑠 𝑒𝑙 𝑑𝑖𝑣𝑖𝑠𝑜𝑟
𝑐, 𝑒𝑠 𝑒𝑙 𝑐𝑜𝑐𝑖𝑒𝑛𝑡𝑒
𝑟, 𝑒𝑠 𝑒𝑙 𝑟𝑒𝑠𝑖𝑑𝑢𝑜
Módulo de un número
Dado dos enteros a y b, siendo b > 0, existen dos enteros c y r, llamados cociente y
residuo, que verifican:
𝑎 𝑚𝑜𝑑 𝑏 = 𝑟
Donde:
𝑋0, 𝑒𝑠 𝑙𝑎 𝑠𝑒𝑚𝑖𝑙𝑙𝑎 (𝑋0 > 0)
𝑎, 𝑒𝑠 𝑒𝑙 𝑚𝑢𝑙𝑡𝑖𝑝𝑙𝑖𝑐𝑎𝑑𝑜𝑟 (𝑎 > 0)
𝑐, 𝑒𝑠 𝑙𝑎 𝑐𝑜𝑛𝑠𝑡𝑎𝑛𝑡𝑒 𝑎𝑑𝑖𝑡𝑖𝑣𝑎 (𝑐 > 0)
𝑚, 𝑒𝑠 𝑒𝑙 𝑚ó𝑑𝑢𝑙𝑜 (𝑚 > 𝑋0, 𝑚 > 𝑎 𝑦 𝑚 > 𝑐)
Características
● Si se repite un número ya se repite toda la secuencia.
● Utiliza poca memoria y es rápido.
● Se genera la misma secuencia, a partir de la semilla: X0.
Ejemplos
● X0=7, a=1, c=7, m=13
● X0=5, a=7, c=9, m=11
● X0=7, a=7, c=7, m=10
Selección de: m, a, c, X0
Por ejemplo en una computadora XT que trabaja en el sistema binario se tiene que:
● p = 2 y d = 16.
Para mejorar más el generador puede tomarse como “m” al número primo más grande
posible y además que sea menor que: pd-1
“a” debe ser un número entero impar, que no deberá ser divisible por 3 ni 5. Pero
además, para que el generador tenga período completo, el valor que se tome para “a”
deberá escogerse según el siguiente criterio:
● (a-1) mod 4 = 0, si 4 es un factor de “m”.
● (a-1) mod b = 0, si b es un factor primo de “m”.
En consecuencia “c” deberá tomar un valor entero, impar y relativamente primo a “m”.
Para “X0” se tiene:
El valor que tome “X0” es irrelevante y tiene poca o ninguna influencia sobre las
propiedades estadísticas de las series de números pseudo-aleatorios que se generen.
Aunque otros consideran un número impar.
De acuerdo con Hull y Dobell, los mejores resultados para un generador congruencial
en una computadora binaria son:
● c = 8*a+3
● a = cualquier entero
● X0 = cualquier entero impar
● m = 2b ,tal que b>2 y “m” debe ser aceptado por la computadora
Otras recomendaciones:
Ejemplos
● X0=6, k=3, c=7, b=3 → X0=6, a=13, c=7, m=8
Actividades
Partiendo de la relación:
𝑋𝑖+1 = (𝑎𝑋𝑖 + 𝑐) 𝑚𝑜𝑑 𝑚, 𝑖 = 0, 1, 2, 3,... 𝑛
Ejemplo
● X0=17, k=2, b=5 → X0=17, a=19, m=32
Actividades
Determinar los periodos
● X0=5, a=5, m=32
● X0=1, a=6, m=13
● X0=10, a=7, m=13
● X0=5, a=5, m=13
● X0=5, a=7, m=11
● X0=3, a=6, m=11
3. Algoritmo congruencial aditivo
Partiendo de la secuencia de números enteros: X1, X2, X3, …, Xn , para generar una
nueva secuencia de números enteros que empiezan en: Xn+1, Xn+2, Xn+3, … su ecuación
recursiva es:
Ejemplo
Genere 7 números pseudo-aleatorios a partir de la secuencia: 65, 89, 98, 03, 69 y
m=100
2
𝑋𝑖+1 = (𝑎𝑋 𝑖
+ 𝑏𝑋𝑖 + 𝑐) 𝑚𝑜𝑑 𝑚, 𝑖 = 0, 1, 2, 3, ...
De acuerdo con L’Ecuyer, las condiciones que deben cumplir los parámetros. a, b, c y
m para alcanzar un periodo máximo N=m son:
● m = 2b , b es cualquier entero
● “a” debe un número par
● (b-1) mod 4 = 1
● “c” debe un número impar
Ejemplo
Generar números pseudo-aleatorios hasta alcanzar el periodo de vida, con los
parámetros: X0=13, m=8, a=26, b=27, c=27.
Partiendo de la relación:
2
𝑋𝑖+1 = (𝑎𝑋 𝑖
+ 𝑏𝑋𝑖 + 𝑐) 𝑚𝑜𝑑 𝑚, 𝑖 = 0, 1, 2, 3, ...
Ejemplo
Generar números pseudo-aleatorios hasta alcanzar el periodo de vida, con los
parámetros: X0=13, m=8
Referencia
E. Garcia, Simulacion y analisis de sistemas con Promodel, 2da edición,