You are on page 1of 22

Creaci on y evaluaci on de generadores de n umeros

aleatorios con distribuci on uniforme en [0,1]


Yair Hern andez, Jes us Rojas, Edgar Sucar
Dept. de Matem aticas, Universidad de Guanajuato
Mexico
21 de diciembre de 2013
1. Introducci on
Los n umeros aleatorios son muy usados en muchas y diferentes tipos de
aplicaciones. Por ejemplo en simulacion, cuando una computadora modela un
fenomeno natural los n umeros aleatorios son necesarios para hacer las cosas mas
realistas. En analisis numerico muchas ingeniosas tecnicas para resolver proble-
mas complicados hacen uso de los n umeros aleatorios, como en los metodos
de Montecarlo. En computacion los n umeros aleatorios representan una buena
fuente de datos para probar la efectividad de un algoritmo, mas aun son crucia-
les en las operaciones de algoritmos aleatorios, que muchas veces son incluso mas
ecientes que los algoritmos determinsticos. Esto solo por mencionar algunas
de las aplicaciones de los n umeros aleatorios.
Sin embargo, basta ponernos a pensar un rato para cuestionar el hecho de
si un ordenador, que trabaja bajo operaciones determinsticas, pueda generar
una secuencia de n umeros aleatorios. Para nuestra desgracia los n umeros que
generemos con un ordenador no son del todo aleatorios, si no pseudoaleatorios.
Es decir, un ordenador bajo una serie de operaciones determinsticas puede
en cierta forma simular aleatoridad. La cuestion radica entonces que que tan
buena es dicha simulacion de la aleatoridad. En el presente trabajo realizaremos
la simulacion de n umeros aleatorios con distribucion uniforme y aplicaremos
algunas pruebas estadsticas a estos para comprobar que tan aleatorios son.
2. El metodo congruencial lineal
El metodo congruencial lineal para generar n umeros pseudo-aleatorios es
uno de los metodos mas utilizados, debido sobre todo a la relativa sencillez de
su implementacion. Este metodo fue introducido por Derrick Henry Lehmer en
1949.
Se basa en elegir 4 n umeros enteros magicos:
1
i) m > 0, el modulo
ii) m > a 0, el multiplicador
iii) m > c 0, el incremento
iv) m > X
0
0, la semilla.
La secuencia deseada se dene entonces como
X
n+1
= aX
n
+c mod m, n 0 (1)

Esta recibe el nombre de secuencia congruencial lineal.


El problema que surge ahora es, cual es la mejor eleccion de los 4 n umeros
arriba mencionados, tales que la secuencia generada sea sucientemente alea-
toria?
Los n umeros m = 10, X
0
= a = c = 7 son un ejemplo claro de una mala
eleccion, puesto que la secuencia generada es
7, 6, 9, 0, 7, 6, 9, 0 . . .
As como en el ejemplo arriba mostrado, para cualquier eleccion de los 4
n umeros que denen la secuencia, en a lo mas m pasos, esta entrara en un ciclo.
Dada la manera en que se dene la secuencia, esto es evidente, pues solo existen
m posibles residuos al dividir entre m. El ciclo al cual se entra se le denomina
periodo. De manera analoga se tiene que el periodo tiene a lo mas longitud
m.
Un requisito para que una secuencia sea util es que el periodo sea sucien-
temente grande.
El caso a = 1 puede ser descartado inmediatamente, pues entonces la secuen-
cia generada sera X
n
= (X
0
+nc) mod m, que no presenta un comportamiento
aleatorio. El caso a = 0 es peor a un, pues X
n
= c, n 0. Podemos considera
entonces a = 1, 0 teniendo entonces lo siguiente:
X
n+k
= aX
n+k1
+c mod m = a(aX
n+k2
+c) +c mod m
= . . . = a
k
X
n
+ (1 +a +. . . +a
k1
)c mod m
= a
k
X
n
+
a
k
1
a 1
c mod m (2)
Una consecuencia de la formula anterior es que la sucesion denida en general
por m, a, c, X
0
puede ser expresada en terminos del caso en que X
0
= 0, c = 1.
Sean Y
0
= 0, Y
n+1
= (aY
n
+ 1) mod m. Luego tendremos por la ecuacion (2)
Y
k
= (a
k
1)/b mod m. Por lo tanto, la secuencia denida en (1) satisface
X
n
= (AY
n
+X
0
) mod m, A = (X
0
b +c) mod m. (3)
2
3. Eleccion del m odulo y del multiplicador
Como se planteo previamente, se tratara de maximizar el periodo de la se-
cuencia generada. El siguiente teorema determina cuando el periodo es igual a
m. Es importante notar que si c = 0 el periodo no puede ser m, ya que si c = 0,
a partir de que alg un n umero sea 0, los demas n umeros de la sucesion seran 0.
Teorema 3.1. Una secuencia congruencia lineal denida por m, a, c, X
0
tiene
periodo m si y solo si
i) c, m son primos relativos.
ii) a 1 es m ultiplo de cada primo que divide a m
iii) a 1 es m ultiplo de 4 si m tambien lo es.
Para demostrar el teorema anterior requerimos el uso de 3 lemas.
Lema 3.1. Sea p un n umero primo y e un entero positivo, de modo que p
e
> 2.
Si
x 1 mod p
e
, x 1 mod p
e+1
, (4)
entonces
x
p
1 mod p
e+1
, x
p
1 mod p
e+2
. (5)
Demostracion. De (4) se tiene x = 1+qp
e
para alg un entero q que no es m ultiplo
de p, y por el binomio de Newton
x
p
= 1 +
_
p
1
_
qp
e
+. . . +
_
p
p 1
_
q
p1
p
(p1)e
+q
p
p
pe
= 1 +qp
e+1
_
1 +
1
p
_
p
2
_
qp
e
+
1
p
_
p
3
_
q
2
p
2e
+. . . +
1
p
_
p
p
_
q
p1
p
(p1)e
_
.
Lo que esta entre parentesis es un entero, y de hecho, cada termino a excepcion
del primero es m ultiplo de p. En efecto, si 1 < k < p,
_
p
k
_
es divisible entre
p, de modo que
1
p
_
p
k
_
q
k1
p
(k1)e
es divisible entre p
(k1)e
. El ultimo termino
tambien es divisible entre p, pues (p 1)e > 1 cuando p
e
> 2 (si p > 2 es
inmediato; si p = 2, entonces e > 1, de modo que (p 1)e > 1). Entones
x
p
1 + qp
e+1
mod p
e+2
lo cual completa la prueba, pues q no es m ultiplo de
p.
Lema 3.2. Sea d un divisor de m. Si se dene la secuencia Y
n
como
Y
n
= X
n
mod d
entonces,
Y
n+1
= (aY
n
+c) mod d.
3
Demostracion. Al ser d un divisor de m, se tiene que
X
n+1
= aX
n
+c mod m
= aX
n
+c mod d,
de modo que
Y
n+1
= X
n+1
mod d
= aX
n
+c mod d = aY
n
+c mod d.
Lema 3.3. Si la descomposicion de m en factores primos es
m = p
e1
1
. . . p
et
t
(6)
entonces la longitud del periodo de la secuencia congruencial lineal determi-
nada por (X
0
, a, c, m) sera el mnimo com un m ultiplo de las longitudes
j
de
los periodos de las secuencias determinadas por (X
0
mod p
ej
j
, a mod p
ej
j
, c mod
p
ej
j
, p
ej
j
).
Demostracion. Por induccion, bastara demostrar que si m
1
, m
2
son primos re-
lativos, la longitud del periodo de la secuencia generada por
(X
0
, a, c, m
1
m
2
) sera el m.c.m. de las longitudes
1
,
2
de los periodos de las se-
cuencias determinadas por (X
0
mod m
1
, a mod m
1
, c mod m
1
, m
1
) y (X
0
mod
m
2
, a mod m
2
, c mod m
2
, m
2
). Por el lema anterior, denotando las secuencias
anteriores por X
n
, Y
n
, Z
n
respectivamente, se tiene que
Y
n
= X
n
mod m
1
y Z
n
= X
n
mod m
2
, n 0.
Recordemos que si r, s son n umeros primos, a b mod rs a b mod r a
b mod s. Entonces se tiene que
X
n
= X
k
si y solo si Y
n
= Y
k
, Z
n
= Z
k
(7)
Sea

el m.c.m. de
1
,
2
. Como X
n
= X
n+
para todo n a partir de cierto
N (pues X
0
no necesariamente pertenece al ciclo), se tiene que Y
n
= Y
n+
y
Z
n
= Z
n+
, de modo que

. Pero por otro lado, por la denicion de

,
Y
n
= Y
n+
y Z
n
= Z
n+
(analogamente, para todo n a partir de cierto N

).
Por (7) se tiene entonces que X
n
= X
n+
, de modo que

. Por lo tanto,
=

Ahora se dara la demostracion al teorema enunciado al inicio de esta seccion.


Por el lema anterior, basta demostrar el teorema para m = p
e
, con p primo y e
entero positivo; en efecto,
p
e1
1
. . . p
et
t
= = mcm(
1
, . . . ,
t
)
1
. . .
t
p
e1
1
. . . p
et
t
(8)
se cumple si y solo si
j
= p
ej
j
para 1 j t.
4
Si a = 1 el teorema es cierto: en efecto, 1 es primo relativo con cualquier
entero positivo, y b = a 1 = 0 divide a cualquier entero. Tomemos a > 1.
El periodo es de longitud m si y solo si cada entero 0 x < m aparece en el
periodo, puesto que cada valor no puede aparecer mas de una vez. Por lo tanto
se puede considerar X
0
= 0.
Por (2) se tiene
X
n
=
_
a
n
1
a 1
_
c mod m. (9)
.
Si c, m no son primos relativos, X
n
no puede ser 1: en efecto, si alg un X
n
fuese 1, se tendra que 1 = cr + ms, para ciertos enteros r, s. Entonces, 1 es
combinacion lineal de c y m; esto es, el 1 es su maximo com un divisor, de modo
que seran primos relativos. Luego, la condicion (i) del teorema es necesaria. El
periodo tiene longitud m si y solo el mnimo valor de n para el que X
n
= X
0
= 0
es n = m. Por (9) y por (i), el teorema se reduce a probar este ultimo lema:
Lema 3.4. Supongamos que 1 < a < p
e
, con p primo. Si es el mnimo entero
para el cual (a

1)/(a 1) 0 mod p
e
, entonces
= p
e
si y solo si
_
a 1 mod p si p > 2,
a 1 mod 4 si p = 2.
Demostracion. Supongamos que = e
p
. Si a 1 mod p, entonces (a
n
1)/(a
1) 0 mod p si y solo si a
n
1 0 mod p
e
, y a
p
e
1 0 mod p
e
implica que
a
p
e
1 mod p. Pero el peque no teorema de Fermat nos dice que a
p
e
a mod p,
de modo que a 1 mod p lleva a una contradiccion.
Veamos que sucede cuando p = 2 y a 3 mod 4. Luego a 1 mod 2
2
, de
modo que o a 1 mod 2
3
o a 3 mod 2
3
. Aplicando el lema 1 de esta seccion
se tendra lo siguiente
a
2
1 mod 2
3
, a
2
1 mod 2
4
a
4
1 mod 2
4
, a
4
1 mod 2
4
. . .
a
2
e1
1 mod 2
e+1
, a
2
e1
1 mod 2
e+2
. (10)
Notemos tambien que (a
2
e1
1)/(a 1) es entero, pues es igual a la serie
1+a
1
+. . .+a
2
e1
1
. Pero 2
y
, y 2 no divide a a1 (en caso contrario se tendra
una contradiccion con que a 1 mod 4). De (10) se tiene que a
2
e1
1
1 =
r2
e+1
. Las expresiones a ambos lados son divisibles por a 1, y al dividir por
a1 se elimina a lo mas un factor 2 (por las observaciones anteriores). Entonces
se tiene que (a
2
e1
1)/(a 1) = r

2
e
, para alg un entero r

, es decir,
a
2
e1
1
a 1
0 mod 2
e
.
Esto muestra que en general es condicion necesaria tener a = 1+qp
f
, con p
f
> 2,
y que q no sea un m ultiplo de p cuando = p
e
. Ahora veamos que es condicion
5
suciente tener = p
e
. Aplicando el lema 1 repetidamente (de manera similar
a como ya se hizo) tendremos que
a
p
g
1 mod p
f+g
, a
p
g
1 mod p
f+g+1
,
para todo g 0, y por lo tanto
(a
p
g
1)/(a 1) 0 mod p
g
(a
p
g
1)/(a 1) 0 mod p
g+1
.
(11)
En particular (a
p
e
1)/(a 1) 0 mod p
e
. Entonces para la secuencia con-
gruencial (0, a, 1, p
e
) se cumple X
n
= (a
n
1)/(a 1) mod p
e
, de modo que
tiene periodo de longitud , esto es, X
n
= 0 si y solo si n es m ultiplo de . Lue-
go p
e
es m ultiplo de . Esto sucede solo si = p
g
para alg un g, y las ecuaciones
(11) implican que = p
e
, lo cual completa la demostracion del teorema 1.
Se ha analizado el caso en que c = 0. Ahora se analizara cuando c = 0.
Evidentemente el maximo periodo no se puede alcanzar en este caso, pues al
menos el valor 0 no puede aparecer, pues ahora la secuencia esta dada por
X
n+1
= aX
n
mod m, es decir,
X
n
= a
n
X
0
mod m. (12)
En general, si d divide a m y para cierto k, X
k
es m ultiplo de d, X
k+1
, X
k+2
, . . .
tambien seran m ultiplos de d. Este comportamiento no sera muy aleatorio, de
modo que si c = 0, buscaremos que X
n
sea primo relativo a m para todo n.
Luego, la maxima longitud de periodo posible podra (m) (funcion de Euler).
Por el lema 3, el periodo estara determinado por los periodos de las secuen-
cias en las que m = p
e
, as que consideremos a m como tal. Si a es m ultiplo
de p, el periodo sera de longitud 1 (esto es claro por (12): si a e m ultiplo de
p, a
n
sera m ultiplo de p
e
, para todo n N, para alg un N), as que tome-
mos a primo relativo con p. El periodo q es entonces el menor entero tal que
X
0
= a
q
X
0
mod p
e
.
Determinar como elegir a de manera que se maximice el periodo requiere
un analisis mucho mas extenso que el dado cuando c = 0. Sin embargo, Knuth
menciona los siguientes teoremas para hacerlo.
Denimos el orden de a modulo m (a coprimo con m) como el mnimo entero
tal que a

1 mod m. Sea (m) el maximo posible orden, modulo m.


Teorema 3.2. El n umero a tiene el maximo orden posible m odulo p
e
si y solo
si se cumple uno de los siguientes casos:
i) p = 2, e = 1, a es impar
ii) p = 2, e = 2, a mod 4 = 3
iii) p = 2, e = 3, a mod 8 = 3, 5 o 7
iv) p = 2, e 4, a mod 8 = 3 o 5
6
v) p es impar,e = 1, a 0 mod p, y a
(p1)/q
1 mod p para todo primo
divisor q de p 1
vi) p es impar, e > 1, a satisface las condiciones de (v), y a
p1
1 mod p
2
.
Teorema 3.3. Si c=0, el maximo periodo es (m).

Este se alcanza si
i) X
0
es primo relativo con m
ii) a es un elemento primitivo modulo m.
Con los teoremas anteriores podemos sugerir ahora los n umeros que generan
la secuencia con la que se trabajara: a = 134132365, c = 1157625 = (357)
3
, m =
536870912 = 2
29
. En efecto, estos n umeros cumplen los criterios del teorema 1:
i) Por la factorizacion en primos, claramente c, m son coprimos.
ii) a 1 es m ultiplo de 2, que es el unico primo que divide a m.
iii) a 1 es m ultiplo de 4 (a 1 termina en 64), y claramente m es m ultiplo
de 4.
Entonces se puede tomar cualquier semilla entre 0 y m 1 inclusive, pues
por el teorema 1 cualquier n umero de esos aparecera en la secuencia.
Tambien se toma como comparacion el desempe no de la secuencia generada
por a = 7
5
, c = 0, m = 2
3
1 1.

Estos n umeros son sugeridos por Knuth en la
seccion correspondiente a la prueba espectral (tambien son valores citados por
autores mas recientes).
4. Pruebas de bondad de ajuste
4.1. Introducci on
En el presente apartado vamos a aplicar las llamadas pruebas de bondad
de ajuste a secuencias de n umero que se supone provienen de una distribucion
uniforme en [0,1].
Las pruebas de bondad de ajuste son metodos para medir la consistencia entre
una muestra de datos dada y la suposicion de que la muestra viene de cierta
distribucion. En una prueba de bondad de ajuste se trabaja bajo esta suposicion
H
0
conocida como la hipotesis nula.
Dada una muestra x
1
, x
2
, . . . , x
n
, queremos comprobar si hipotesos nula H
0
:=
la muestra proviene de una distribibucion F(x) es cierta. Sin embargo, no
tememos manera de garantizar esto. Lo que nos ofrece una prueba de bondad
en evidencia que apoya la hipotesis y, en caso de no encontrar dicha eviden-
cia podemos rechazar la hipotesis. Es algo parecido a las pruebas matematicas
por contradiccion. Empezamos suponiendo que una armacion, A, es cierta, si
llegamos a una contradiccion a partir de esto, sabemos que la armacion es
falsa. Pero si no llegamos a dicha contradiccion no podemos garantizar algo.
7
En las pruebas de bondad de ajuste esta contradiccion se presenta en terminos
de la probabilidad muy baja. Si a partir de nuestra hipotesis ocurre algo cuya
probabilidad es muy peque na, entonces podemos descartarla. Pero si esto no
ocurre podemos decir que todo marcha como debera y esto da soporte a nuestra
hipotesis.
Aunque solo trabajaremos con muestras que se supone provienen de una distri-
bibucion uniforme en [0,1], algunas de las pruebas que mencionadas aqu entran
en un contexto mas general y las podemos usar con cualquier distribucion. Tal
es el caso de las pruebas Anderson-Darling, Kolmogorov-Smirnov y la prueba
chi-cuadrada.
Antes de continuar mencionemos algunas de las deniciones que estaremos usan-
do.
Denicion 4.1. Sean x
1
, ..., x
n
una muestra de variables aleatorias provenientes
de una distribucion F(x), T
j
una funcion medible de R
n
en R, para j = 1, ..., m,
y T = (T
1
, ..., T
m
). Llamamos a
T(x
1
, ..., x
n
) = T(T
1
(x
1
, ..., x
n
), ..., T
m
(x
1
, ..., x
n
))
El estadstico m-dimensional.
Nos referiremos a T(x
1
, ..., x
n
) como el estadstico o la estadstica.
Denicion 4.2. Supongamos que tenemos una muestra x
1
, ..., x
n
que provie-
ne de una distribucion F. Denimos la funcion de distribucion emprica de la
muestra, F
n
como
F
n
(x) =
(x)
n
donde (x) es el n umero de observaciones menores o iguales a x.
Mas explcitamente
F
n
(x) = 0 si x < x
(1)
F
n
(x) =
i
n
si x
(i)
x < x
(i+1)
F
n
(x) = 1 si x < x
(n)
donde x
(1)
, ..., x
(n)
es la muestra ordenada.
Podemos ver que F
n
(x) es la proporcion de ocurrencias menores o iguales
que x, mientas que F(x) es la probabilidad de que la variable aleatoria sea menor
o igual a x. Se esperara entonces que F
n
sea muy parecida a F cuando n es
grande.
Teorema 4.3. Sean x
1
, ..., x
n
una muestra de v. a. i. con distribucion com un
F, y sea F
n
la funcion de distribucion emprica correspondiente. Entonces
sup{|F
n
(x) f(x)| x R} 0
cuando n , con probabilidad 1
Algunas de las pruebas de bondad se basan el la diferencia entre F(x) y
F
n
(x). Estas pruebas untilizan un estadstico que mide la discrepancia entre F
8
y F
n
. Estos estadsticos son del tipo supremo D = sup{| F(x) F
n
(x) |: x A}
como en la prueba de Kolmogorov-Smirnov o del tipo cuadratico
_

(F
n
(x) F(x))
2
(x) dF(x)
como en la prueba de Anderson-Darling.
4.2. Prueba de frecuencia
Tambien conocida como la prueba Chi-cuadrada (
2
) fue inventada por
Pearson en 1900. La idea de esta prueba es la siguiente: Supongamos que cada
una de n observaciones independientes cae en una de k categoras disjuntas (una
observacion no puede caer en 2 categoras distintas). Sea p
i
la probabilidad
de que una observacion caiga en la i-esima categora y sea Y
i
el n umero de
observaciones que calleron en la i-esima categora. Entonces el valor esperado
del n umero de ocurrencias en la i-esima categora es np
i
y pensaramos que
Y
i
np
i
. As que la estadstica
V =
k

i=1
(Y
s
np
s
)
2
nos mide, en cierta manera, la discrepancia entre el valor esperado y el valor
real. Cua es un valor razonable para dicha cantidad?
Si p
i
es peque no en comparacion con p
j
, entonces, ligeras variaciones en (Y
i

np
i
)
2
son mas signicativas que en (Y
j
np
j
)
2
. As que no podemos ponderar
ambas cantidades de igual forma. Computemos entonces la siguiente cantidad:
V =
k

i=1
(Y
s
np
s
)
2
np
s
.
Dado que Y
i
np
i
, esperaramos que esta cantidad no sea muy grande. Sin
embargo siempre tendremos una discrepancia entre una variable aleatoria y su
valor esperado por lo tanto si V 0, podramos pensar que la muestra no es
muy aleatoria.
Esta cantidad es conocida como la estadstica chi-cuadrada, y su comporta-
miento asintotico es el de una variable aleatoria
2
con k 1 grados de libertad
(
2
(k)). Esto nos da una respuesta de cuan grande devera ser V .
Dado que la distribibucion
2
no tiene funcion de distribucion analitica, existen
tablas como la de abajo, en las que se muestran los valores que esta toma en
algunos puntos representativos.
En la primera columna aparecen valores enteros positivos que corresponden
a los grados de libertad. Mientras que en la primera la aparecen valores entre 0
9
p=0.01 p=0.05 p=.25 p=0.50 p=0.75 p=0.95 p=0.99
= 1 0.00016 0.00393 0.1015 0.4549 1.323 3.841 6.635
= 2 0.02010 0.1026 0.5754 1.386 2.773 5.991 9.210
= 3 0.1148 0.3518 1.213 2.366 4.108 7.815 11.34
= 4 0.2971 0.7107 1.923 3.357 5.385 9.488 13.28
= 5 0.5543 1.1455 2.675 4.351 6.626 11.07 15.09
= 6 0.8721 1.635 3.455 5.348 7.841 12.59 16.81
y 1 que corresponden a probabilidades. El signicado de un n umero x que esta
en la la y la columna p es el siguiente: La probabilidad de que una variable
aleatoria X con distribibucion
2
con grado de libertad tome un valor menor
o igual a x es p. Llamamos a x el cuantil de probabilidad p para la variable
aleatoria
2
().
As, si al computar la estadstica V con k = 7 obtenemos un valor mayor que
12,59, decimos que bajo la susposicon de la hipotesis nula ha ocurrido un evento
de probabilidad 0,05. Esta probabilidad podra ser peque na o no dependiendo
del contexto. Si consideramos que es muy peque na podemos,entonces, descartar
la hipotesis H
0
. Por otro lado si V tomara un valor muy peque no, digamo menor
que 1,635, al jarnos el la tabla vemos que este evento tiene una probabilidad
de 0.05.Nuevamente podemos descartar la hipotesis H
0
si se considera esta pro-
babilidad peque na.
Es com un tomar los cuantiles de probabilidades 0,05 y 0,95 como un interva-
lo razonable para la estadstica V. Sin embargo esto no es para nada una ley
absoluta ya que el que una probabilidad sea peque na o no depende de el contex-
to y/o de la percepcion del individuo. Knuth sugiere en su libro los siquientes
valores:
1. Si V es menor que el cuantil de probabilidad 0,01 o mayor que el de 0,99,
rechazamos la hipotesis H
0
2. Si V esta entre los cuantiles de probabilidad de 0,01 y 0,05 o entre los de
0,95 y 0,99, decimos que la hipotesis H
0
es sospechosa.
3. Si V esta entre los cuantiles de probabilidad de 0,05 y 0,1 o entre los de
0,9 y 0,95, decimos que la hipotesis H
0
es casi sospechosa.
Seg un Knuth la prueba debe realizarse al menos tres veces para distintas
muestras y, si en al menos dos de ellas la hipotesis resulta sospechosa, la recha-
zamos. Desde luego podemos ponernos mas estrictos y rechazar la hipotesis si
resulta sospechiza al menos una vez.
Basados en analisis empricos se hacen algunas recomendaciones para la prueba
como dividir el espacio en categoras con igual probabilidad y tomar muestras
lo sucientemente grandes para que en valor esperado en cada categora sea de
al menos 5.
Mencionado esto, procedemos a realizar la prueba al generador propuesto en el
presente trabajo, A, a un generador propuesto por Lewis, Goodman y Millar,
10
B, y al generador del lenguaje C, C.
Los generadores A y B funcionan con el metodo congruencial:
x
n+1
= (ax
n
+c) mod m
con los parametros a = 134132365, c = 1157625 y m = 536870912 para A y
a = 7
5
, c = 0 y m = 2
31
1 para B.
Para cada generador repetimos la prueba 5 veces con muestras distintas de
tama no 1000 y con 30 divisiones del intervalo unitario en intervalos de igual
longitud. La hiotesis nula H
0
es la muestra proviene de una distribibucion
continua uniforme en [0, 1].
Se obtuvieron los siguinetes tesultados para cara generador:
1. para el generador A, V tomo los valores 29,9 42,5 18,8 27,44 22,58,
2. para el generador B, V tomo los valores 32,12 32,9 18,8 25,88 23,84,
3. para el generador C, V tomo los valores 27,32 33,14 33,29 26,54 36,32.
Podemos ver como los tres generadores pasan la prueba satisfactoriamente.
Cabe mencionar, sin embargo, que estas prueba no es tan fuerte como lo son
algunas de la pruebas siguientes. De hecho los tres generadores que pasaron
estata prueba tienden a tener fallos en las demas.
4.3. Prueba de Kolmogorov-Smirnov
4.4. Prueba de Anderson-Darling
Esta prueba se basa en un estadstico que mide la diferencia entre la fucion
de distrubucion y la funcion de distribucion emprica. Denimos la estadstica
de Anderson-Darling de una muestra x
1
, ..., x
n
como:
A
2
=
_

(F
n
(x) F(x))
2
(x) dF(x)
donde F es la funcion de distribibucion de la hipotesis nula, F
n
es la funcion de
distribucion emprica de la muestra y esta dada por:
(x) =
1
F(x)(1 F(x))
.
Podemos ver que la funcion pondera la direrencia entre F(x) y F
n
(x) en cada
punto x R, dando mayor peso a las colas de la distribibucion, es decir, donde
F(x) es muy cercana a 0 o a 1.
Se demuestra en Anderson-Darling (1954) que A
2
se puede escribir como
A
2
= n
1
n
n

i=1
(2i 1)(log(F(x
(i)
)) log(1 F(x
(n+1i)
))),
11
o equivalentemente
A
2
= n
1
n
n

i=1
(2i 1) log(F(x
(i)
)) (2n + 1 2i)log(1 F(x
(i)
))
Donde x
(1)
, ..., x
(n)
es la muestra ordenada.
Observemos que no siempre es facil calcular F(x) para un distribibucion dada.
Por suerte la funcion de distribucion de una uniforme es facil de calcular.
Estos son algunos de los cuantiles de la distribibucion asintotica de la estadstica
de Anderson-Darling:
p=0.01 p=0.05 p=.10 p=0.90 p=0.95 p=0.99
0.201 0.283 0.346 1.933 2.492 3.880
Se aplico la prueba 15 veces a los tres generadores antes mencionados con
muestras de tama no 100. Nuevamente la hipotesis nula H
0
es la muestra viene
de una distribucion continua uniforme en [0, 1]. Los resultados obtenidos se
muestran a cuntinucion.
Para el generador A, A
2
tomo los siguientes valores:
_
_
0,4752 3,3088 0,7387 0,9465 0,3675
0,2451 1,2506 0,7478 0,5902 0,4988
0,5424 1,3219 1,7481 1,3884 1,8285
_
_
Aplicando los mismos criterios propuestos por Knuth marcamos con O las
veces que la muestra pasa las prueba, con X las veces que esta es sospehosa y
con XX las veces que se rechaza denitivamente la hipotesis:
_
_
O X O O O
X O O O O
O O O O O
_
_
Para el generador B tenemos A
2
tomo los siguientes valores:
_
_
0,6555 0,6079 0,3517 0,4546 0,8101
1,0950 0,6109 0,7992 3,0263 0,4697
0,6570 0,4586 0,2196 0,8067 0,2747
_
_
y haciendo lo mismo con los O, X y XX tenemos:
_
_
O O O O O
O O O X O
O O X O X
_
_
12
Por ultimo para el generador del lenguaje C, A
2
tomo los siguientes valores:
_
_
1,5764 1,2173 1,2716 3,3866 1,1083
0,2936 1,5138 1,6533 1,6136 1,9470
1,6309 1,3021 1,9687 1,6657 1,1548
_
_
y de igual forma
_
_
O O O X O
O O O O O
O O O O O
_
_
Podemos ver que en los tres casos ocurren uno o dos incidentes donde la
hipotesis H
0
resulta. sospechosa. Segun los criterios de Knuth el generador de
lenguaje C pasa la prueba pero lo otros dos no.
4.5. Independencia de intervalos
Las prueba que hemos aplicado hasta ahoro trabajan con la muestra sin
tomar en cuenta el orden en que esta es generada. Esta prueba en cambio con-
cierne principalmente en este orden.
Dividamos el intervalo unitario en k intervalos de misma longitud y contemos
en m umero de veces n
ij
que una ocurrencia x
m
en el intervalo i es seguida por
una ocurrencia x
m+1
en el intervalo j, formando as una matriz N = (n
ij
) de
k k. Si la distribucion de la que viene la muestra es es uniforme en [0, 1] y
tenemos observaciones independientes, uno esperara que no haya un orden en
los saltos de un intervalo a otro, y por lo tantos los n
ij
tendran todas el mismo
valor esperado,
n
k
2
. Good I. J. Muestra que si
n
i
=
k

j=1
n
ij
,
entonces
V = (
k
2
n
)
k

i=1
k

j=1
(n
ij

n
k
2
)
2
(
k
n
)
k

i=1
(n
i

n
k
)
2
se aproxima a una
2
con k(k 1) grados de libertad.
Es aqu donde los tres generadores fallan. Se aplico la prueba a 15 veces para
cada generador con una division de 10 intervalos. Los resultados obtenidos fue-
ron los siguientes
Para el generador A, V tomo los siguientes valores:
_
_
83,7 112,9 90,4 82,6 106,7
63,8 78,8 59,1 108,0 94,8
103,1 52,3 104,8 88,4 80,6
_
_
Con la misma notacion usada antes mostramos de manera mas ilustrativa los
resultado:
_
_
O O O O O
X O XX O O
O O O O O
_
_
13
Para el generador B su tiene:
_
_
73,3 96,7 91,4 103,7 91,4
98,7 91,2 60,9 71,3 97,4
88,8 71,7 66,8 102,7 79,3
_
_
_
_
O O O O O
O O XX O O
O O X O O
_
_
Y para el generador del lenguaje C se tiene:
_
_
118,4 100,7 105,8 105,6 71,4
94,8 62,4 91,3 73,4 107,28
113,3 109,6 130,8 64,8 86,3
_
_
_
_
O O O O O
O O XX O O
O O X O O
_
_
Podemos ver como los tres generadores dejan de pasar la prueba de manera
contundente en al menos una ocasion.
4.6. Prueba de la corrida
Esta es otra prueba que trabaja con el orden en el que la muestra es gene-
rada. La idea de esta es jarnos en las sucesiones crecientes o decrecientes de la
muestra. Una muestra con una larga sucesion monotona es altamente sospechosa
de no ser aleatoria.
Denicion 4.4. Si se cumple que x
i
> x
i+1
< x
i+2
, ..., < x
i+r
> x
i+r+1
, deci-
mos que x
i+1
, ..., x
i+r
es una corrida ascendente de longitud r. (Analogamente
se dene una corrida descendente).
Por ejemplo, en la serie de n umeros 1, 2, 9, 8, 5, 3, 6, 7, 0, 4 tenemos que hay
una corrida de longitud 3 seguida de dos corridas de longitud 1, una corrida de
longitud 4 y una corrida de longitud 2.
1, 2, 3 | 8 | 5 | 3, 6, 7 | 0, 4
Veamos que la longitud de las corridas no son independientes, pues corridas
largas tienden a ser seguidas de corridas cortas, y corridas cortas tienden a ser
seguidas de largas. As que, no podemos aplicar un test como los anteriores
a la longitud de las corridas. En vez de eso debemos computar la siguiente
estadstica:
V =
1
n 6

1i,j6
(up(i) nb
i
)(up(j) nb
j
)a
ij
,
14
donde up(i) es el n umero de corridas ascendentes de la longitud i, para i =
1, ..., 5, up(6) es el n umero de corridas ascendentes de longitud mayor o igual a
6 y a
ij
y b
i
son las entradas de la matriz y vector:
A =
_
_
_
_
_
_
_
_
4529,4 9044,9 13568 18091 22615 27892
9044,9 18097 27139 36187 45234 55789
13568 27139 40721 54281 67852 83685
18091 36187 54281 72414 90470 111580
22615 45234 67852 90470 113262 139476
27892 55789 83685 111580 139476 172860
_
_
_
_
_
_
_
_
B =
_
_
_
_
_
_
_
_
1
6
4
24
11
120
19
720
29
5040
1
840
_
_
_
_
_
_
_
_
El comportamiento asintotico de la estadstica V es el de una
2
con 6 grados
de libertad. Se sugiere que el tama no de la muestra sea de al menos 4000.
Hacemos la prueba 15 veces a cada generador con una muestra de tama no 6000.
Los resultados obtenidos se muestran a continuacion.
Para el generador A, V tomo los siguientes valores:
_
_
1,56 9,63 4,98 6,41 8,07
3,28 3,03 4,09 3,87 3,02
4,93 6,64 13,81 3,30 11,44
_
_
y con los mismo criterios ya mencionemos, mostramos de manera mas ilustrativa
los resultados,
_
_
X O O O O
O O O O O
O O X O O
_
_
Para el generador B, V tomo los siguientes valores:
_
_
1,40 9,27 2,88 10,68 1,87
3,20 4,68 11,40 7,76 5,11
3,17 5,86 6,89 2,61 5,76
_
_
_
_
X O O O O
O O O O O
O O O O O
_
_
Y para el generador C, V tomo los siguientes valores:
_
_
7,57 16,20 9,23 9,82 3,90
3,60 2,61 4,78 3,12 1,96
6,70 6,05 3,05 5,40 3,28
_
_
15
_
_
O X O O O
O O O O O
O O O O O
_
_
Veamos como los generadores B y C tienden a lo mas un incidente donde
la muestra es sospechosa. Sin embargo el generador A tiene dos. As que en un
sentido estricto, A no pasa la prueba.
5. Prueba Kolmogorov-Smirnov
5.1. Descripcion de la prueba
A continuacion se describira una prueba estadstica para vericar si una
muestra de dataos sigue una distribucion propuesta, y se usara esta prueba
para probar tres generadores de n umeros aleatorios.
Sean X
1
, X
2
, ..., X
n
variables aleatorias i.i.d. y sea F(x) su fncion de distri-
bucion. Su funcion de distribucion emprica F
n
(x), esta dada por:
F
n
(x) =
#{X
i
, i = 1, ..., n : X
i
x}
n
. (13)
La prueba Kolmogorov-Smirnov (prueba KS) puede ser usada cuando F(x)
es continua, y consiste en analizar las diferencias entre F(x) y F
n
(x). Es de
esperarse que si tenemos un mal generador de n umeros aleatorios tendra una
distrubicion emprica que no aproxima bien a la real. Para hacer la prueba
denimos las siguientes estadsticas:
K
+
n
=

n max{F
n
(x) F(x), x R};
K

n
=

n max{F(x) F
n
(x), x R}.
(14)
K
+
n
mide la maxima desviacion cuando F
n
(x) es mayor a F(x), y K

n
la
mide cuando F
n
(x) es menor a F(x).
El factor

n magnica K
+
n
y K

n
de tal forma que esta desviacion estandar
sea independiente de n. Se demostrara a continuacion que la desviacion estandar
de F
n
(x) es proporcional a
1

n
.
Proposicion 5.1. Para x jo, ((F
n
(x)) =

F(x)(1F(x))

n
.
Demostracion. Tenemos que nF
n
(x) = #{X
i
, i = 1, ..., n : X
i
x}, de donde
nF
n
(x) B(F(x)). Ahora:
V ar(F
n
(x)) =
1
n
2
V ar(nF
n
)
=
1
n
2
nF(x)(1 F(x))
=
F(x)(1 F(x))
n
.
16
Por lo tanto ((F
n
(x)) =
_
V ar(F
n
(x)) =

F(x)(1F(x))

n
.
De aqu se ve que sera mejor denir la estadstica:
K
+
n
=

n max{
F
n
(x) F(x)
_
F(x)(1 F(x))
, x R} (15)
Y respectivamente para K

n
, pero por efectos practicos consideraremos las
denidas en (14).
Figura 1: Puntos de porcentaje selectos para las funciones de distribucion de
K
+
n
y K

n
.
Una vez obtenidos los valores de K
+
n
y de K

n
, los podemos buscar en la
tabla de la gra 1, para as determinar si son razonables.
Las formulas (14) no son adecuadas para su implementacion en computadora.
Pero podemos ordenar las observaciones de tal forma que X
1
X
2
... X
n
17
y as las estadsticas estan dadas por:
K
+
n
=

n max{
j
n
F(X
j
), j {1, 2, .., n};
K

n
=

n max{F(X
j

j 1
n
), j {1, 2, .., n}.
(16)
Para determinar si la funcion de distribucion de las variables aleatorias X
j
es diferente a la propuesto se necesitara un valor relativamente grande de n;
pero por otra parte tomar n muy grande promediara los comportamientos no
aleatorios locales, que son una caracterstica altamente no deseada en la mayora
de las aplicaciones de un generador de n umeros aleatorios. Una estrategia para
evitar esto es tomar valores de n relativamente mas chicos, digamos 1000 y
calcular K
+
1000
un n umero signicativo, r, de veces para secuencias distintas,
obteniendo as :
K
+
1000
(1), K
+
1000
(2), ..., K
+
1000
(r). (17)
Y podemos aplicar de nuevo la prueba KS a estos resultados. Sea ahora
F
Kn
(x) la funcion de distribucion de K
+
n
(en este caso n=1000) y obtenemos la
funcion de distribucion emprica, F
r,Kn
(x) de igual forma que en (13) usando
(17). Para n grande podemos aproximar F
Kn
(x) por:
lm
n
F
Kn
(x) = 1 e
2x
2
, x 0. (18)
Lo mismo aplica para K

n
pues esperamos que se comporte de igual forma.
Esta tecnica de hacer diferentes pruebas para n moderadamente grande y com-
binar dichas observaciones aplicande de nuevo la prueba KS en ellas, tiende a
detectar comportamiento no aleatorio de forma local y global. Antes de realizar
esta prueba con generadores aleatorios presentaremos otra, que se puede usar
para aplicar la prueba KS.
5.2. Prueba del maximo de t
Proposicion 5.2. Sean U
1
, U
2
, .., U
t
variables aleatorias independientes con
distribucion uniforme en [0,1]. Sea V = max(U
1
, U
2
, .., U
t
) con F
V
(x) su fun-
cion de distribucion, entonces:
F
V
(x) = x
t
, 0 x 1.
Demostracion. Para 0 x 1:
F
V
(x) = P(V x)
= P(U
1
x, U
2
x, ..., U
t
x)
= P(U
1
x)P(U
2
x)...P(U
t
x), por independencia
= (F
U1
(x))
t
= x
t
.
18
Ahora podemos obtener n variables aleatorias V
j
, cada una para secuencias
independientes de t v.a.i. con distribucion uniforme en [0,1], para asi aplicar la
prueba KS a estas n variables aleatorias.
5.3. Realizaci on de prueba KS
Se realizo la prueba KS a tres generadores de n umeros aleatorios. Para ello se
obtuvieron (con cada algoritmo) 30 valores de K
+
500
, cada uno correspondiente a
500 valores de V
j
(denido en la seccion anterior) usando la prueba del maximo
de 5. Las guras 2, 3 y 4 muestran la comparacion de la distribucion emprica
(en azul) contra la aproximacion de la distribucion real (18) (en rojo) para los
tres algoritmos. Al aplicar la prueba KS a la informacion representada en las
guras 2, 3 y 4 , obtenemos los reultados presentes en la tabla 1.
Figura 2: Distribucion emprica de algoritmo propuesto por nosotros.
Fig 2 Fig 3 Fig 4
K
+
30
0.1655 0.4851 0.8424
K

30
0.6995 0.4797 0.5883
Cuadro 1: Prueba KS a datos de guras 2, 3 y 4.
En base a las guras 2, 3 y 4 y a la tabla 1 se puede concluir que el algoritmo
cuya aleatoriedad es mas staisfactoria es el presentado por el libro, pues los
19
Figura 3: Distribucion emprica de algoritmo propuesto por el libro.
Figura 4: Distribuci on emprica de algoritmo en la librera de C.
20
valores de K
+
30
y K
+
30
caen en los rangos esperados (consultados en la tabla
de la imagen 1), mientras el usado por C y el propuestos por nosotros son
sospechesos pues se encuentran en un rango mas raro pero tampoco demasiado
poco probable para que sean rechazados.
Figura 5: Repetidas pruebas KS para los tres algoritmos.
La gura 5 muestra una tabla con 15 pruebas KS como las de la tabla 1
para cada algoritmo; A: nuestro, B: libro, C: lenguaje C. El color indica el
rango en el que se encuentra los valores K
+
n
y K

n
de la tabla de la imagen
1; con negro(rechazar): 0 % 1 % o 99 % 100 %, rojo(sospechoso): 1 % 5 %
o 95 %99 % y gris(casi sospechoso): 5 %10 % o 90 %95 %. En base a esta
tabla se puede ver que el generador de C no puede ser considerado como bueno,
mientras el A y B son moderadamente satisfactorios.
6. Conclusi on
El metodo congruencial lineal para generar n umeros aleatorios es facil de
implementar, pero presenta una dicultad en la eleccion de sus parametros. A
pesar de que ciertas propiedades de teora de n umeros permiten optimizar cosas
como el periodo, no es claro la mejor eleccion para que el comportamiento sea
lo mas cercano posible a una variable aleatoria con distribucion uniforme en
[0,1]. Considerando esta dicultad se recurre a una gran diversidad de pruebas
estadsticas que evaluan diversos aspectos del generador, determinando que tan
parecido es cada aspecto, al de una variable aleatoria teorica.
Se realizaron varias pruebas en tres generadores aleatorios (el de C y dos
metodos congruenciales lineales, uno propuesto por nosotros y otro obtenido
de un libro). Los resultados de cada prueba no coincidieron completamente,
por ejemplo el algoritmo de C paso la prueba de Anderson-Darling, pero pre-
sento dicultades en la prueba Kolmogorov-Smirnov. Tambien hubieron pruebas
mas difciles, ning un algoritmo paso la prueba de independencia de inter-
valos. Esto se podra deberse a dos cosas; una, cada prueba eval ua aspectos
diferentes del generador y/o dos, los parametros de cada prueba (como el ta-
ma no de la muestra) a traves de las pruebas no tienen un balance. A pesar de
esto, ningun algoritmo fue completamente exitoso, de lo que se concluye, que
de los tres algoritmos para generar n umeros aleatorios probados, ninguno es
sucientemente bueno al simular una variable aleatoria uniforme.
21
Referencias
[1] Knuth D. E., The Art of Computer Programming, 2: Seminumerical Algo-
rithms (3rd ed.), Addison-Wesley Professional, (1982).
[2] DAgostino R. B., Stephens M. A., Goodness of t techniques vol. 68, Marcel
Dekker, Inc., (1986).
22

You might also like