Simt 1 B
Simt 1 B
Por lo tanto, la primera objeci on que se le puede hacer a este metodo, objeci on
com un a todos los generadores de n umeros pseudo-aleatorios, es que la sucesion de
los valores x
n
no es en absoluto aleatoria. Sin embargo, posteriormente veremos que si
elegimos las parametros iniciales convenientemente, la sucesion {u
n
} puede asemejarse
a una sucesi on de n umeros aleatorios.
La segunda objeci on es que los valores u
i
pueden tomar solo los valores 0,
1
m
,
2
m
, . . . ,
m1
m
, luego no hay posibilidad de generar un valor, por ejemplo entre
2
m
y
3
m
. Tomando
m sucientemente grande m 10
9
, el conjunto de posibles valores es sucientemente
denso en [0, 1] como para que la sucesion asemeje a la de una variable continua uniforme
en dicho intervalo.
Ejemplo 1.4. Consideremos el generador congruencial x
n
= 5x
n1
+ 1 mod 9 con
x
0
= 1.
n x
n
u
n
n x
n
u
n
n x
n
u
n
0 1 - 2 3 0.333 4 0 0
1 6 0.6666 3 7 0.7777 5 1 0.1111
Ejemplo 1.5. Consideremos el generador congruencial x
n
= 5x
n1
+ 3 mod 16, con
x
0
= 7.
1.2. Metodos de generacion de n umeros pseudo-aleatorios 7
n x
n
u
n
n x
n
u
n
n x
n
u
n
n x
n
u
n
0 7 - 5 10 0.625 10 9 0.563 15 4 0.25
1 6 0.375 6 5 0.3125 11 0 0 16 7 0.4375
2 1 0.0625 7 12 0.75 12 3 0.1875 17 6 0.375
3 8 0.5 8 15 0.9375 13 2 0.125 18 1 0.0625
4 11 0.6875 9 14 0.875 14 13 0.8125 19 8 0.5
Se observa que el generador del ejemplo 1.4 no es adecuado, pues produce un ciclo
de longitud 6 < m = 9 (la longitud de ciclo de un operador se denomina periodo). Sin
embargo, en el generador del ejemplo 1.5 la longitud de ciclo coincide exactamente con
el m odulo, lo cual es inevitable, pues es evidente que el periodo nunca puede exceder
al modulo. En este caso, se dice que el generador es de ciclo completo. Observese que
un generador sea de ciclo completo es independiente de la semilla que se utilice; sea
cual sea x
0
{1, . . . , m}, el ciclo siempre tendr a periodo m y se producira en el mismo
orden. Sin embargo, si un generador no es de ciclo completo, la longitud de ciclo puede
depender de la semilla utilizada. Si en el ejemplo 1.4 utilizamos x
0
= 5 o x
0
= 8, el
periodo resultante es 2.
De los ejemplos anteriores se desprende que una cuesti on de interes es c omo elegir los
par ametros del generador de forma que este tenga ciclo completo. El siguiente teorema,
propuesto por Hull y Dobell (1962) proporciona un caracterizaci on en este sentido.
Teorema 1.6. Un generador congruencial tiene periodo completo si y solo si se cumplen
las siguientes condiciones:
1. m y b son primos entre s
2. Si q es un n umero primo que divide a m, entonces q divide a a 1.
3. Si 4 divide a m, entonces 4 divide a a 1.
8 Tema 1. Generacion de n umeros aleatorios
Corolario 1.7. Un generador congruencial multiplicativo no puede tener periodo com-
pleto
Es evidente que es necesario que m sea grande con el n de un periodo largo y
una alta densidad en el intervalo [0, 1]. Sin embargo, la operacion de dividir por m y
calcular el resto es relativamente lenta. Una elecci on de m adecuada computacional-
mente es m = 2
k
, donde k-bits es el tama no de palabra (unidad b asica de trabajo)
del microprocesador. El hecho de que esta elecci on sea ventajosa reside en que nos
podemos aprovechar del desbordamiento de datos (integer overow) para no tener que
realizar la operaci on del generador explcitamente. La cuesti on es que si tenemos una
m aquina de k-bits, entonces el mayor entero que puede ser representado es 2
k
1 y
en cualquier intento de representar un entero mayor H, que ocupara h > k dgitos
binarios, se perderan los h k dgitos binarios m as a la izquierda, y los k dgitos que
quedan se corresponden precisamente con H mod 2
k
.
Ejemplo 1.8. Para ilustrar como aprovechar el desbordamiento de datos en el gener-
ador del ejemplo 1.5, veamos como generar x
10
= 9 a partir de x
9
= 14.
Observemos que 5x
14
+3 = 73, que en binario es 1001001. Como nuestra capacidad
es de 4 bits, el desbordamiento de datos produce que se pierdan los tres primeros
dgitos, quedando 1001 que es la representaci on binaria de x
10
= 9.
Corolario 1.9. Un generador congruencial con m = 2
k
4 tiene periodo completo si
y solo si b es impar y 1 = a mod 4.
Los generadores multiplicativos tienen la ventaja computacional de que no es nece-
sario la suma de la constante b, pero, como hemos visto, no pueden tener periodo
completo. Afortunadamente, es posible obtener periodo m1 si m y a se eligen ade-
cuadamente. Los generadores multiplicativos se introdujeron antes que los mixtos, han
sido objeto de mas estudio y actualmente se utilizan mas que los mixtos.
1.2. Metodos de generacion de n umeros pseudo-aleatorios 9
Al igual que los generadores mixtos, la mejor forma de elegir el modulo desde el
punto de vista computacional es tomar m = 2
k
. Sin embargo, en este caso, el periodo
m aximo posible ser a una cuarta parte del modulo.
Proposicion 1.10. El periodo maximo de un generador congruencial multiplicativo
con m = 2
k
16 es 2
k2
. Dicho periodo maximal se alcance si y solo si x
0
es impar y
3 = a mod 8 o 5 = a mod 8
Un generador multiplicativo muy utilizado, conocido como RANDU, tomaba m =
2
31
y a = 2
16
+ 3. Sin embargo, se ha demostrado que tiene propiedades estadsticas
bastante malas.
Debido a los problemas que surgen de elegir m = 2
k
en los generadores multiplica-
tivos, se han investigado otras alternativas para el valor de m. La mas satisfactoria es
la propuesta de Hutchinson en 1966, que consiste en tomar como m el mayor primo
menor que 2
k
. Por ejemplo, si k = 31, el mayor primo menor que 2
31
es 2
31
1. A este
respecto se tiene el siguiente resultado.
Teorema 1.11. Sea t la longitud de un ciclo maximal de un generador congruencial
multiplicativo. Se verica que:
1. Si t = m1, entonces m es primo
2. Si m es primo, entonces t divide a m1.
3. Si m es primo, entonces t = m 1 si y solo si a es una raz primitiva de m (a
es una raz primitiva de m si a = 0 y no existe ning un factor primo p de m1
tal que 1 = a
m1
p
mod m)
Los generadores multiplicativos mas famosos utilizados por IBM tomaban m =
2
31
1 y a
1
= 7
5
o a
2
= 630360016.
10 Tema 1. Generacion de n umeros aleatorios
Ejemplo 1.12. Consideremos un generador congruencial multiplicativo con m = 31.
Encontrar los periodos correspondientes a los multiplicadores a
1
= 3, a
2
= 4.
Como m = 31 es primo, entonces la longitud maximal de ciclo t debe dividir a
m1 = 30 = 2 3 5. Luego t puede valer 1, 2, 3, 5, 6, 10, 15 y 30.
a
1
= 3. Veamos si 3 es raz primitiva de 31. Para ello hay que comprobar que
no se verican ninguna de las siguientes relaciones: 1 = 3
15
mod 31, 1 = 3
10
mod 31 y 1 = 3
6
mod 31.
3
15
mod 31 = 14348907 mod 31 = 30 = 1
3
10
mod 31 = 59049 mod 31 = 25 = 1
3
6
mod 31 = 729 mod 31 = 16 = 1
Por lo tanto, aplicando el tercer supuesto del teorema 1.11 se sigue que el gener-
ador tiene ciclo maxima de longitud 30.
a
1
= 3. Veamos si 4 es raz primitiva de 31. Para ello hay que comprobar que
no se verican ninguna de las siguientes relaciones: 1 = 4
15
mod 31, 1 = 4
10
mod 31 y 1 = 4
6
mod 31.
4
15
mod 31 = 1073741824 mod 31 = 1
Por lo tanto, aplicando el tercer supuesto del teorema 1.11 se sigue que el gener-
ador no tiene ciclo maximo de longitud 30. Se puede comprobar que en este caso
hay seis ciclos de longitud 5 y uno de longitud 1.
1.2.3. Combinaci on de algoritmos congruenciales
Los algoritmos congruenciales se pueden combinar para aumentar el periodo del
ciclo de generacion. Estas combinaciones se basan en los siguientes resultados:
1.2. Metodos de generacion de n umeros pseudo-aleatorios 11
Si U
1
, . . . U
k
son variables aleatorias iid U(0, 1), entonces la parte fraccional de
U
1
+. . . U
k
tambien sigue una distribuci on U(0, 1)
U
1
+U
2
+ +U
k
[U
1
+U
2
+. . . U
k
] U(0, 1)
Si u
1
, u
2
, . . . , u
k
est an generados por algoritmos congruenciales con ciclos de peri-
odo c
1
, c
2
, . . . , c
k
, respectivamente, entonces la parte fraccional de u
1
+u
2
+ +u
k
tiene un ciclo de periodo m.c.m.{c
1
, c
2
, . . . , c
k
}.
El algoritmo combinado de Wichmann y Hill (1982,1984) tiene un periodo de orden
10
12
. El generador es:
x
i
171x
i1
mod 30269
y
i
172y
i1
mod 30307
z
i
170z
i1
mod 30323
y tomar
u
i
=
_
x
i
30269
+
y
i
30307
+
z
i
30323
_
_
x
i
30269
+
y
i
30307
+
z
i
30323
_
1.2.4. Otros generadores mas complicados
Aunque los generadores congruenciales son los m as utilizados en la practica, se han
desarrollado otros tipos de generadores con la intencion de obtener periodos m as largos
y mejores propiedades estadsticas. A menudo, sin embargo, un generador congruencial
con parametros elegidos adecuadamente puede funcionar tan bien que otras alternativas
m as complicadas.
12 Tema 1. Generacion de n umeros aleatorios
Los generadores congruenciales pueden generalizarse a recursiones lineales de orden
mayor, considerando la siguiente relacion
x
n
= (a
1
x
n1
+ +a
k
x
nk
) mod m,
donde el orden k y el m odulo m son enteros positivos, y los coecientes a
j
son enteros
variando entre (m 1) y (m 1). En la n-esima iteraci on, el estado es el vector
(x
n
, x
n1
, . . . , x
n+k1
) Z
k
m
. La funci on de salida se puede denir simplemente como
u
n
=
xn
m
.
El estudio de este generador se asocia al estudio del polinomio caracterstico
P(z) = z
k
a
1
z
k1
a
k
sobre el cuerpo nito Z
m
. Cuando m es primo y el polinomio es primitivo sobre Z
m
, el
periodo del generador es m
k
1 (periodo m aximo posible en esta clase de generadores).
1.3. Tests para la comprobacion de la uniformidad
y la aleatoriedad
1.3.1. Comprobaci on de la uniformidad
A continuacion, se muestran algunos procedimientos para vericar la uniformidad
de los n umeros aleatorios generados por alg un metodo. Se trata de decidir si los n umeros
generados se pueden considerar como una realizaci on de una muestra aleatoria simple
de una distribucion U(0, 1).
1.3. Tests para la comprobacion de la uniformidad y la aleatoriedad 13
1.3.1.1. Contraste de Kolmogorov-Smirnov
El test de K-S es un test de bondad de ajuste que se utiliza para determinar si los
datos de una determinada muestra se ajustan a una hipotetica distribuci on.
Dada una muestra aleatoria simple x
1
, . . . , x
n
, la funcion de distribuci on emprica
de la muestra es
F
n
(x) =
1
n
n
i=1
I
x
i
x
=
|valores x
i
x|
n
.
Las hipotesis son:
H
0
: F
n
= F
0
H
1
: F
n
= F
0
,
donde F
0
es la hipotetica funci on de distribucion. El estadstico de contraste para el
test K-S es
D
n
= sup
xR
|F
n
(x) F
0
(x)|.
La distribuci on de D
n
est a tabulada. La region crtica del contraste es [D
n,
, +),
donde D
n,
es el percentil de orden 1 de la distribuci on de D
n
.
En nuestro caso particular, F
0
es la funci on de distribuci on de una v.a. U(0, 1),
y por lo tanto, se puede comprobar que el estadstico de Kolmogorov-Smirnov para
contrastar la uniformidad de la muestra u
1
, . . . , u
n
viene dado por:
D
n
= m ax
1in
_
m ax
_
i
n
u
(i)
i 1
n
u
(i)
__
siendo u
(i)
el i-esimo menor valor de la muestra.
1.3.1.2. Test de la
2
Dada la muestra u
1
, . . . , u
n
y un nivel de signicaci on , el test consiste en los
siguientes pasos:
14 Tema 1. Generacion de n umeros aleatorios
1. Dividir el intervalo (0, 1) en k clases disjuntas de la misma amplitud,
1
k
. Para
cada clase C
j
, contar el n umero de elementos O
j
que cae en dicha clase.
2. Comparamos las frecuencias observadas en cada clase con las que corresponderan
seg un la distribuci on te orica. Se considera el estadstico:
T =
k
j=1
_
O
j
n
k
_
2
n
k
.
Se demuestra que para n grande, T sigue una distribucion
2
con k 1 grados
de libertad.
3. Se rechaza la hip otesis de uniformidad si T >
2
k1,
, donde
2
k1,
es el percentil
de orden 1 de la distribuci on
2
k1
.
1.3.1.3. Contraste de los pares consecutivos no solapados
Dada la muestra u
1
, . . . , u
n
, n par, y un nivel de signicaci on , el test consiste en
los siguientes pasos:
1. Dividir el intervalo (0, 1) en k clases disjuntas de la misma amplitud,
1
k
.
2. Categorizamos la muestra u
1
, . . . u
n
asociando a cada u
i
el ndice de la clase a la
que pertenece. Sea y
1
, . . . , y
n
la muestra discretizada (y
i
= j u
i
C
j
).
3. Agrupamos los valores de la muestra discretizada en pares consecutivos no sola-
pados
(y
1
, y
2
), (y
3
, y
4
), . . . (y
n1
, y
n
)
4. Sea O
ij
el n umero de veces que aparece el par (i, j). Si la hipotesis de uniformidad
es cierta, entonces O
ij
Bi
_
n
2
, p =
1
k
2
_
. Por tanto, E[O
ij
] = E
ij
=
n
2m
2
.
1.3. Tests para la comprobacion de la uniformidad y la aleatoriedad 15
5. Se eval ua el estadstico de contraste
T =
k
i=1
k
j=1
(O
i
j E
ij
)
2
E
ij
.
Se demuestra que para n grande, T sigue una distribuci on
2
con m
2
1 grados
de libertad.
6. Se rechaza la hipotesis de uniformidad si T >
2
m
2
1,
, donde
2
m
2
1,
es el per-
centil de orden 1 de la distribuci on
2
m
2
1
.
1.3.2. Contraste de aleatoriedad
A continuacion, mostraremos un procedimiento para comprobar la aleatoriedad de
la muestra de numeros generados.
1.3.2.1. Test de rachas
Dada la muestra u
1
, . . . , u
n
se construye una sucesi on formada por 0 y 1 del siguiente
modo: en la posici on i se coloca un 0 si x
i+1
< x
i
y se coloca un 1 si x
i+1
> x
i
.
Cada grupo consecutivo se 0s o 1s se denomina racha. Se demuestra que para n
sucientemente grande, el n umero de rachas R sigue una distribucion normal
R N
_
2n 1
3
,
2
=
16n 29
90
_
El estadstico de contraste sera
Z =
R
2n1
3
_
16n29
90
que sigue una distribuci on N(0, 1).
Para un nivel de signicacion , se rechaza la hip otesis de aleatoriedad si |Z| > Z
/2
.
16 Tema 1. Generacion de n umeros aleatorios
1.4. Simulaci on Montecarlo
Se entiende por simulaci on Montecarlo al uso de n umeros aleatorios (realizaciones
de variables U(0, 1) para resolver ciertos problemas estocasticos o determinsticos en
los que el paso del tiempo no juega un papel esencial (problemas de tipo est atico).
1.4.1. Calculo de series
Supongamos que deseamos calcular =
xD
g(x). Consideremos X una variable
aleatoria discreta con soporte D y funcion puntual de probabilidad p(x). Entonces,
xD
g(x) =
xD
g(x)
p(x)
p(x) = E
_
g(X)
p(X)
_
.
Si {X
i
}
i=1
es una sucesion de variables aleatorias iid con funcion puntual de probabili-
dad p(x), entonces
_
g(X
i
)
p(X
i
)
_
i=1
es una sucesi on de variables aleatorias con media . Por
la ley de los grandes n umeros, se tiene que
1
k
k
i=1
g(X
i
)
p(X
i
)
cuando k
Consecuentemente, simulando una muestra (x
1
, . . . , x
k
) de la v.a. X, podemos estimar
mediante
1
k
k
i=1
g(x
i
)
p(x
i
)
.
1.4.2. Aproximaci on de integrales
1.4.2.1. Metodo 1. General
Deseamos estimar el valor de una integral =
_
C
g(x)dx. Siguiendo un esquema
similar al de la estimaci on de series podemos considerar una variable aleatoria continua
1.4. Simulacion Montecarlo 17
con soporte en C y funcion de densidad f(x). Entonces,
=
_
C
g(x)dx =
_
C
g(x)
f(x)
f(x)dx = E
_
g(X)
f(X)
_
.
De nuevo, como aplicacion de la ley de los grandes n umeros, se tiene que simulando
una muestra (x
1
, . . . , x
k
) de la v.a. X, podemos estimar mediante
1
k
k
i=1
g(x
i
)
f(x
i
)
.
1.4.2.2. Metodo 2. Utilizaci on de n umeros aleatorios
Una de las primeras aplicaciones de los n umeros aleatorios fue la aproximaci on de
integrales denidas. Supongamos que deseamos obtener
=
_
1
0
g(x)dx
Para obtener el valor de . podemos observar que si U U(0, 1), entonces podemos
expresar = E[g(U)]. Si U
1
, . . . , U
k
son v.a. iid U(0, 1), se sigue que las variables
aleatorias g(U
1
), . . . , g(U
k
) son iid con media . Por lo tanto, por la ley fuerte de los
grandes numeros, se sigue que
k
i=1
g(U
i
)
k
E[g(U)] = cuando k
Consecuentemente, podemos aproximar generando una cantidad sucientemente grande
de n umeros aleatorios u
i
y tomando el promedio de los valores g(u
i
).
Si deseamos calcular
=
_
b
a
g(x)dx,
basta hacer el cambio de variable y =
xa
ba
, con lo cual
=
_
1
0
(b a)g(a + [b a]y]dy =
_
1
0
h(y)dy.
donde h(y) = (b a)g(a + [b a]y].
18 Tema 1. Generacion de n umeros aleatorios
Del mismo modo, si deseamos aproximar
=
_
0
g(x)dx,
basta hacer el cambio de variable y =
1
x+1
, con lo cual
=
_
1
0
h(y)dy.
donde h(y) =
g(
1
y
1)
y
2
.
1.4.2.3. Metodo 3. Acierto o fallo
Supongamos que deseamos calcular
_
b
a
g(x)dx, donde la funcion g est a acotada
en (a, b). El problema se puede transformar equivalentemente en calcular la integral
_
1
0
g(x)dx, donde la funcion g verica 0 g(x) 1, para todo x (0, 1). El valor de
dicha integral es el area de supercie encerrada por la curva dentro del cuadrado [0, 1]
[0, 1], lo que equivale a calcular P ((X, Y ) A), donde (X, Y ) es una variable aleatoria
bidimensional distribuida uniformemente en el cuadrado unidad (equivalentemente, X
e Y variables U(0, 1) independientes) y A es el conjunto de puntos (x, y) del cuadrado
unidad tales que y < g(x).
Un metodo para estimar la probabilidad de dicho suceso es simular una muestra
{(x
i
, y
i
)}
n
i=1
de puntos de cuadrado unidad y calcular la proporcion muestral de los que
pertenecen al conjunto A.