0% encontró este documento útil (0 votos)
114 vistas7 páginas

Generadores Congruenciales: Conceptos Previos

Este documento describe varios algoritmos congruenciales para generar números pseudoaleatorios. Explica el algoritmo congruencial lineal, donde el número siguiente se genera a partir del anterior usando una relación de recurrencia. También cubre el algoritmo congruencial multiplicativo y aditivo. Por último, presenta algoritmos congruenciales no lineales como el cuadrático y el de Blum, Blum y Shub. El documento proporciona ejemplos y recomendaciones para seleccionar los parámetros de cada algoritmo.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
114 vistas7 páginas

Generadores Congruenciales: Conceptos Previos

Este documento describe varios algoritmos congruenciales para generar números pseudoaleatorios. Explica el algoritmo congruencial lineal, donde el número siguiente se genera a partir del anterior usando una relación de recurrencia. También cubre el algoritmo congruencial multiplicativo y aditivo. Por último, presenta algoritmos congruenciales no lineales como el cuadrático y el de Blum, Blum y Shub. El documento proporciona ejemplos y recomendaciones para seleccionar los parámetros de cada algoritmo.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 7

Generadores congruenciales

Conceptos previos

Algoritmo de la división entera


Dado dos enteros a y b, siendo b > 0, existen dos enteros c y r, llamados cociente y
residuo, que verifican:
● 𝑎 = 𝑏𝑐 + 𝑟
● 0 ≤ 𝑟 < 𝑏

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:
𝑎 𝑚𝑜𝑑 𝑏 = 𝑟

Congruencia (teoría de números)


Congruencia es un término usado, para designar que dos números enteros 𝑥, 𝑦 tienen
el mismo resto al dividirlos por un número natural 𝑚 ≠ 0; esto se expresa utilizando la
notación:
𝑥 ≡ 𝑦 ( 𝑚𝑜𝑑 𝑚)
Esto se cumple si y sólo si
𝑚 | (𝑥 − 𝑦)
1. Algoritmo congruencial lineal

Derrick Henry Lehmer (1905 – 1991) fue un matemático estadounidense. En 1940,


Lehmer aceptó una posición de regreso en el departamento de matemática de la
Universidad de Berkeley. Mientras se encontraba aquí es que desarrolló el generador
lineal congruencial (generador de números pseudoaleatorios), conocido como
generador de números aleatorios de Lehmer.

El generador congruencial lineal genera una serie de números pseudo-aleatorios de


tal forma que se puede generar el siguiente a partir del último número derivado, es
decir, que el número Xn+1 es generado a partir de Xn.

La relación de recurrencia para el método congruencial mixto es:

𝑋𝑖+1 = (𝑎𝑋𝑖 + 𝑐) 𝑚𝑜𝑑 𝑚, 𝑖 = 0, 1, 2, 3,... 𝑛

Donde:
𝑋0, 𝑒𝑠 𝑙𝑎 𝑠𝑒𝑚𝑖𝑙𝑙𝑎 (𝑋0 > 0)
𝑎, 𝑒𝑠 𝑒𝑙 𝑚𝑢𝑙𝑡𝑖𝑝𝑙𝑖𝑐𝑎𝑑𝑜𝑟 (𝑎 > 0)
𝑐, 𝑒𝑠 𝑙𝑎 𝑐𝑜𝑛𝑠𝑡𝑎𝑛𝑡𝑒 𝑎𝑑𝑖𝑡𝑖𝑣𝑎 (𝑐 > 0)
𝑚, 𝑒𝑠 𝑒𝑙 𝑚ó𝑑𝑢𝑙𝑜 (𝑚 > 𝑋0, 𝑚 > 𝑎 𝑦 𝑚 > 𝑐)

Para generar números pseudo-aleatorios, se tiene la relación:


𝑋𝑖
𝑟𝑖 = 𝑚−1
, 𝑖 = 0, 1, 2, 3,... 𝑛 [0,1]
𝑋𝑖
𝑟𝑖 = 𝑚
, 𝑖 = 0, 1, 2, 3,... 𝑛 [0,1[

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

Para “m” se tiene:

“m” debe ser en el entero más grande que acepte la computadora:


m = pd-1
Donde:
● p, es la base del sistema que se está usando.
● d, es el número de bits que tiene una palabra de computadora.

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

Para “a” se tiene:

“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”.

Generalmente se toma “a” igual a 2K+1 cuando se trabaja en el sistema binario. En


ambos casos el valor que se asigne a “k” deberá ser mayor o igual que 2.

Para “c” se tiene:

● Para una computadora binaria


○ c mod 8 = 5
● Para una decimal
○ c mod 200 = 21

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.

Caso: computadora binaria:

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:

Bank, Carson, Nelson y Nicol sugieren:


● m = 2b , b es cualquier entero
● a = 1+4k, k es cualquier entero
● c es un primo relativo a “m”

Ejemplos
● X0=6, k=3, c=7, b=3 → X0=6, a=13, c=7, m=8

Actividades

Determinar el periodo de los siguientes generadores congruenciales lineales:


● Xn+1 = (8Xn+16) mod 100 y X0 = 15.
● Xn+1 = (50Xn+17) mod 64 y X0 = 13.

Genere números aleatorios entre 0 y 1 con los siguientes generadores congruenciales


y determine el ciclo de vida de cada uno.
● Xn+1 = (40Xn+13) mod 33 y X0 = 30.
● Xn+1 = (71Xn+57) mod 341 y X0 = 71.
2. Algoritmo congruencial multiplicativo

Partiendo de la relación:
𝑋𝑖+1 = (𝑎𝑋𝑖 + 𝑐) 𝑚𝑜𝑑 𝑚, 𝑖 = 0, 1, 2, 3,... 𝑛

con c=0 se tiene:


𝑋𝑖+1 = (𝑎𝑋𝑖) 𝑚𝑜𝑑 𝑚, 𝑖 = 0, 1, 2, 3,... 𝑛

esta última expresión corresponde al algoritmo congruencial multiplicativo

Criterios para los parámetros :

Bank, Carson, Nelson y Nicol sugieren:


● m = 2b , b es cualquier entero
● a = 3+8k o también a = 5+8k, k = 0, 1, 2, 3, ...
● X0= debe ser un número impar

Con estas condiciones se logra un periodo de vida máximo de N = m/4 = 2b-2

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:

𝑋𝑖 = (𝑋𝑖−1 + 𝑋𝑖−𝑛) 𝑚𝑜𝑑 𝑚, 𝑖 = 𝑛 + 1, 𝑛 + 2, 𝑛 + 3, ...

Ejemplo
Genere 7 números pseudo-aleatorios a partir de la secuencia: 65, 89, 98, 03, 69 y
m=100

4. Algoritmos congruenciales no lineales

a. Algoritmo congruencial cuadrático

La relacion recursiva corresponde a:

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.

b. Algoritmo de Blum, Blum y Shub

Partiendo de la relación:

2
𝑋𝑖+1 = (𝑎𝑋 𝑖
+ 𝑏𝑋𝑖 + 𝑐) 𝑚𝑜𝑑 𝑚, 𝑖 = 0, 1, 2, 3, ...

para el caso: a=1, b=0 y c=0 se tiene:


2
𝑋𝑖+1 = (𝑋 𝑖) 𝑚𝑜𝑑 𝑚, 𝑖 = 0, 1, 2, 3, ...

esta última relación corresponde al algoritmo de Blum, Blum y Shub

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,

También podría gustarte