Clase3. generación y verificación de numeros aleatorios
1. Para generar una simulación se requiere
numeros aleatorios en el intervalo de [0,1]
Generación de números pseudo
aleatorios
2. Generación de numeros pseudo
aleatorios
ci
ni
si
si
ei
ei
ei
Ci = variables exogenas
• Algunas de las variables de entrada son de tipo aleatorio por lo que se
tendrán que generar valores que simulen dichas entradas.
• Para generar variables aleatorias que sigan determinadas funciones de
probabilidad necesitamos partir de series de números que cumplan la
aleatoriedad.
3. Propiedades deseadas de buenos
generadores
El método más común es generar el siguiente
número a partir de los últimos números generados
Una de estas funciones es:
Si comenzamos con xo = 5, los primeros 32 números
generados son: 10, 3, 0, 1, 6, 15, 12, 13, 2, 11, 8, 9,
14, 7, 4, 5, 10, 3, 0, 1, 6, 15, 12, 13, 2, 11, 8, 9, 14, 7,
4, 5
5. Algoritmos de cuadrados medios
Algoritmo no congruencial, propuesto por Von Neumann y
Metropolis.
1. Seleccionar una semilla (Xo) con D dígitos (D>3)
2. Sea Yo= resultado de elevar Xo al cuadrado, sea X1= los D
dígitos del centro, y sea ri=0.D dígitos del centro.
3. Sea Yi=resultado de elevar Xi al cuadrado; sea Xi+1=los D
dígitos del centro, y sea ri=0.D dígitos del centro para toda
i=1,2,3,…n.
4. Repetir el paso 3 hasta obtener los n números ri, deseados.
Ejemplo: Generar los primeros 5 números ri, a partir de una semilla
Xo=5735, de donde se puede observar que D=4 dígitos
6. Algoritmos de productos medios
1. Seleccionar una semilla (Xo) con D dígitos (D>3)
2. Seleccionar una semilla (X1) con D dígitos (D>3)
3. Sea Yo= Xo * X1,sea X2= los D dígitos del centro, y sea ri=0.D
dígitos del centro.
4. Sea Yi= Xi * Xi+1; sea Xi+2=los D dígitos del centro, y sea ri+1 =
0.D dígitos del centro para toda i=1,2,3,…n.
5. Repetir el paso 4 hasta obtener los n números ri, deseados.
Ejemplo: Generar los primeros 5 números ri, a partir de una semilla
Xo=5015 y X1=5734; observe que ambas semillas tienen D=4
dígitos.
7. Algoritmo de multiplicador constante
1. Seleccionar una semilla (Xo) con D dígitos (D>3)
2. Seleccionar una constante (a) con D dígitos (D>3)
3. Sea Yo= a * X0, sea X1= los D dígitos del centro, y
sea ri=0.D dígitos del centro.
4. Sea Yi= a *Xi; sea Xi+1 = los D dígitos del centro, y
sea ri+1 = 0.D dígitos del centro para toda i=1,2,3,…n.
5. Repetir el paso 4 hasta obtener los n números ri,
deseados.
Ejemplo: Generar los primeros 5 números ri, a partir de
una semilla Xo = 9803 y con la constante a = 6915.
8. Algoritmo lineal
Algoritmo congruencial propuesto por D.H. Lehmer en 1951.
Xi+1=(aXi + c) mod (m) i=0,1,2,3,….,n.
ri = Xi+1 / (m-1) i=0,1,2,3,…,n.
Ejemplo: Generar 5 números entre 0 y 1 con los siguientes
parámetros: Xo=37, a=19, c=33 y m=100.
Donde:
Xo= semilla
a= constante multiplicativa
c= constante aditiva
m = modulo
9. Algoritmo lineal
Para lograr un máximo periodo de vida “n”. Banks,Carson, Nelson
y Nicol sugiere:
m=2^g
a = 1+4k
Donde:
k y g debe ser entero
C relativamente primo a m.
Bajo estas condiciones el periodo de vida máximo: N = m = 2^g
Ejemplo: Generar números entre 0 y 1 con los parámetros Xo=6,
k=3, g=3 y c=7, hasta encontrar el periodo máximo (N)
a= 1+4(3)=13 y m = 2^3=8
11. Algoritmo congruencial multiplicativo
Surge del algoritmo congruencial lineal cuando c=0. entonces la
ecuación recursiva es:
Xi+1=(aXi) mod (m) i=0,1,2,3,….,n.
ri=Xi/(m-1)
De acuerdo con Banks,Carson, Nelson y Nicol sugieren lo
siguiente:
m = 2^g
a = 3+8k ó a=5+8k
A partir de estas condiciones se logra un periodo de vida
máximo N = m/4 = 2^(g-2)
K=0,1,2,3,….
Xo debe ser impar
g debe ser entero
12. Algoritmo congruencial multiplicativo
Ejemplo: Generar los suficientes números entre 0 y 1
con los siguientes parámetros: Xo=17, k=2 y g=5,
hasta encontrar el periodo o ciclo de vida.
Xi+1=(aXi)mod(m) i=0,1,2,3,….,n.
ri=Xi/(m-1)
N=m/4=2^(g-2)
m=2^g
a = 3+8k ó a=5+8k
13. Algoritmo congruencial aditivo
Este algoritmo requiere una secuencia previa de “n”
números enteros X1, X2,…,Xn para generar una
nueva secuencia de números enteros que empieza
en Xn+1, Xn+2,…..
Su ecuación recursiva es:
Xi=(Xi-1 + Xi-n) mod (m) i=n+1, n+2, n+3,…., N
Los números ri = Xi / (m-1)
14. Algoritmo congruencial aditivo
Ejemplo: Generar 7 números pseudo aleatorios entre
cero y uno a partir de la siguiente secuencia de
números enteros: 65, 89, 98, 03, 69. m=100
Xi=(Xi-1 + Xi-n) mod (m) i=n+1, n+2, n+3,…., N
15. Algoritmo congruencial cuadrático
Xi+1=(a*(Xi)^2 + b*Xi +c) mod (m) i=0,1,2,…,N
ri=Xi/(m-1)
De acuerdo con L’Ecuyer las condiciones que
debe cumplir los parámetros m,a,b y c para
alcanzar un periodo máximo de N=m son:
m=2^g
Donde:
a= debe ser numero par
c= debe ser numero impar
g debe ser entero
(b-1)mod 4 = 1
16. Algoritmo congruencial cuadratico
Ejemplo: Generar, a partir del algoritmo
congruencial cuadrático, suficientes números
enteros hasta alcanzar el periodo de vida,
considerando los parámetros Xo=13, m=8, a=26,
b=27 y c=27
Xi+1=(a*(Xi)^2 + b*Xi +c) mod(m)
i=0,1,2,…,N
ri=Xi/(m-1)