Вы находитесь на странице: 1из 28

MTODOS DE SIMULACIN

Captulo 1. Generacin de nmeros aleatorios

Captulo 1. Generacin de nmeros aleatorios

NDICE
1. 2. Introduccin Contrastes empricos - Uniformidad (Contraste 2 y Kolmogorov-Smirnov) - Aleatoriedad (Rachas, Test de Pker) - Repeticin de contrastes Generadores congruenciales Otros generadores - Registro de desplazamiento - Fibonacci retardados - No lineales - Combinacin de generadores - Generadores paralelos - Generadores comerciales Conclusiones

3. 4.

5.

Captulo 1. Generacin de nmeros aleatorios

1. Introduccin
Disponibilidad de un buen generador de nmeros aleatorios. Es un elemento esencial en muchas otras reas de la Informtica (algoritmos aleatorizados, verificacin de algoritmos, complejidad de algoritmos, criptografa,...), de la Estadstica (mtodos de muestreo y remuestreo, contrastes Montecarlo, Inferencia Bayesiana...), .... Adems, un elemento importante en aplicaciones como juegos para ordenador, protectores de pantallas,... La disponibilidad de generadores de nmeros aleatorios en muchos entornos y compiladores hara pensar que para un mero usuario de la Simulacin no sera necesario estudiar estas cuestiones. Sin embargo, una leccin que se deriva del estudio de algunos generadores comerciales es que debemos actuar con sumo cuidado con ellos (rea de investigacin bastante activa).

Captulo 1. Generacin de nmeros aleatorios

Problema: escoger una fuente de nmeros aleatorios y obtener de esta fuente suficientes nmeros para nuestro experimento de simulacin. Orgenes histricos. Tablas de nmeros aleatorios: Tippet (1927): Universidad de Cambridge, 10.000 nmeros aleatorios de 4 dgitos basados en censos. Royo y Ferrer (1954): 250.000 resultados de la lotera nacional (INE). Rand Corporation (1954): 1 milln de nmeros aleatorios mediante el uso de mecanismos fsicos (ruleta electrnica, medicin de ruido electrnico...). Inconveniente del uso de mecanismos fsicos falta de reproducibilidad.

Procedimientos algortmicos de generacin de nmeros La idea (von Neumann) es producir nmeros que parezcan aleatorios, empleando las operaciones aritmticas del ordenador: partiendo de una semilla inicial (u0, u1,..., u-p+1), generar una sucesin mediante ui = d(ui-1,..., ui-p), para cierta funcin d.

Captulo 1. Generacin de nmeros aleatorios

qu se considera como secuencia de nmeros aleatorios? Definicin clsica de Kolmogorov (Kolmogorov y Uspenskii, 1987) (asociada a la idea de complejidad algortmica). Una sucesin de nmeros es aleatoria si no puede producirse eficientemente mediante un programa ms corto que la propia serie. Criterio de Turing (IA). Una suc. de ns es aleatoria si nadie que utilice recursos computacionales razonables en t. razonable puede distinguir entre la serie y una sucesin verdaderamente aleatoria de una forma mejor que tirando una moneda fiel para decidir cul es cul. (Generadores PT-perfectos usados en criptografa). Definicin basada en la Estadstica. Una sucesin de nmeros aleatorios (ui) es una sucesin de nmeros en (0,1) con las mismas propiedades estadsticas relevantes de una sucesin de nmeros aleatorios (Uniformidad en (0,1) o bondad de ajuste y aleatoriedad o independencia estadstica). Otras propiedades relativas a la eficiencia computacional: 1) Rapidez; 2) Poco consumo de memoria; 3) Portabilidad; 4) Sencillez en la implementacin; 5) Reproducibilidad y mutabilidad; 6) Periodo suficientemente largo.

Captulo 1. Generacin de nmeros aleatorios

2. Contrastes empricos Bondad de ajuste o uniformidad


Contraste 2 El contraste 2 de Pearson es el ms antiguo y vlido para distribuciones continuas y discretas. Sin embargo, es poco potente, por lo que permite justificar el rechazo de una hiptesis, pero proporciona escaso soporte para su aceptacin. Supongamos que tenemos una muestra x1,...,xn (n 25) de una poblacin con funcin de distribucin Fn(x) desconocida y deseamos contrastar la hiptesis H0: Fn(x) = F0(x), para todo x R, donde F0(x) est completamente especificada (conocemos la distribucin y los parmetros de la misma), frente a la alternativa H1: Fn(x) F0(x) para algn x. En nuestro caso, F0(x) = U(0,1).

Captulo 1. Generacin de nmeros aleatorios

1. 2.

Agrupamos los n datos en k clases mutuamente excluyentes, k 5, que cubran todo el rango posible de valores, siendo Oi a la frecuencia observada en la clase i. Calculamos la frecuencia esperada, Ei, de la clase i de acuerdo con el modelo F0(x). Conociendo la probabilidad que asigna el modelo a la clase i tenemos Ei = n x pi

3.

Calculamos la discrepancia entre las frecuencias observadas y las esperadas mediante el modelo F0(x): k (O Ei ) 2 X2 = i Ei i =1 que se distribuye aproximadamente como una 2 cuando el modelo es correcto. Determinamos los grados de libertad: Si el modelo especifica las probabilidades pi antes de tomar la muestra, entonces el n de grados de libertad es k 1. Si las pi se han calculado estimando r parmetros del modelo de mxima verosimilitud, entonces el n de grados de libertad es k r 1. Rechazamos el modelo cuando X2 2(k r 1) para un nivel de significacin pequeo (0.05, 0.01, 0.001).

4.

5.

Captulo 1. Generacin de nmeros aleatorios

En nuestro caso, para contrastar la uniformidad escogeremos k subintervalos de [0,1] de la misma longitud, siendo pi = 1/k y, por lo tanto, Ei = n/k y r = 0, ya que no ha sido necesario estimar ningn parmetro de la distribucin para obtener pi.

Ejemplo. Durante la segunda guerra mundial se dividi el mapa de Londres en cuadrculas de 1/4 km2 y se contabiliz el nmero de bombas cadas en cada cuadrcula durante un bombardeo alemn. Los resultados fueron:
Cuadrcula Frec. Impactos 0 1 2 3 4 7 5 1

229 211 93 35

Contrastar la hiptesis de que los datos siguen una distribucin de Poisson.

Captulo 1. Generacin de nmeros aleatorios

Solucin. El nmero de clases es 6 y conocemos las frecuencias observadas. Para calcular las frecuencias esperadas necesitamos conocer la probabilidad de que un impacto se produzca en cada una de las clases. Dicha probabilidad toma la forma siguiente para una distrii bucin de Poisson pi = e i! por lo tanto, necesitamos estimar un parmetro mediante el principio de mxima verosimilitud, siendo r = 1. Hacemos x j O j = 535 = 0.929 = O j 576 Obtenemos las frecuencias esperadas de las clases: E0 = n p0 = 227.5 E1 = n p1 = 211 E 4 = n p4 = 7 E3 = n p3 = 30 La discrepancia entre frecuencias observadas y esperadas es:
X2 =

E2 = n p2 = 98 E5 = n p5 = 1.5

(229 227.5)2 + (211 211)2


227.5 211

+ ... +

(1.5 1)2
1

= 1.27

El n de grados de libertad es k r 1 = 4 y de la tabla de la 2 obtenemos que 20.25(4) = 1.92 y 20.1(4) = 1.06. Por lo tanto, 20.25(4) > X2 > 20.1(4), no siendo pequeo Aceptamos la hiptesis.

Captulo 1. Generacin de nmeros aleatorios

Contraste Kolmogorov-Smirnov (K-S)


Es vlido para distribuciones continuas, pero muy potente. Deseamos contrastar la hiptesis H0: Fn(x) = F0(x) 1. Ordenamos los valores muestrales de manera que x(1) x(2) ... x(n) 2. Calculamos la funcin de distribucin emprica de la muestra: Fn(x) = 0 r/n 1 si x < x(1) si x(r) x < x(r+1) si x > x(r)

3. Calculamos la mxima discrepancia entre la funcin de distribucin emprica y la terica contrastada. Estadstico bilateral de K-S Dn= supxR |Fn(x) - F0(x)|. La distribucin exacta de Dn est tabulada para valores seleccionados de n 40 y del nivel de significacin .

Captulo 1. Generacin de nmeros aleatorios

Para muestras grandes, se utiliza la distribucin asinttica de Dn, que viene dada, para todo z0, por limn P((n)1/2 Dn z) = L(z) donde L(z) est tabulada y se comprueba que la aproximacin es suficientemente buena para n 35. Intuitivamente, esperamos que Dn sea pequeo cuando la hiptesis nula es cierta. En nuestro caso particular de aleatoriedad, si x(1) x(2) ... x(n) designa al estadstico de orden, F0(x(i)) = x(i) , y como Fn(x(i)) = i/n , resulta

i i 1 Dn = max max x( i ) , x( i ) 1i n n n

Captulo 1. Generacin de nmeros aleatorios

Ejemplo. Contrastar si la siguiente muestra de duraciones de vida puede suponerse exponencial: 16, 8, 10, 12, 6, 10, 20, 7, 2, 24.
Ordenamos la muestra: 2, 6, 7, 8, 10, 10, 12, 16, 20, 24. Representamos la funcin emprica:

1.0 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 5 10 15 20 25

Funcin de distribucin exponencial

F0 ( x) = 1 e x
Estimamos el parmetro a partir de la media muestral:
16 + 8 + 12 + ... + 24 = 11.5 = 1 / 10

Dn = 0.21 < D(=0.2, n=10) = 0.322 Aceptamos la hiptesis

Captulo 1. Generacin de nmeros aleatorios

Aleatoriedad o Independencia Estadstica


Contraste de Rachas Dada una secuencia de nmeros x1, x2, , xn. 1. Construimos una sucesin de smbolos binarios, asignando un 1 si xi xi+1 y 0 si xi > xi+1. 2. Definimos como racha creciente (decreciente) de longitud l a un grupo de l unos (0s) consecutivos. Contabilizamos el nmero de rachas, que denotaremos como nr. Puede comprobarse que el nmero total de rachas en una muestra de n observaciones independientes sigue una distribucin aproximadamente normal (si n 40) con parmetros
=
2n 1 3

2 =

16n 29 90

Captulo 1. Generacin de nmeros aleatorios

3. Comprobamos si el nmero total de rachas observadas puede provenir con una probabilidad razonable de dicha distribucin
P z 2 n 1 16 n 29 n r ? N , 3 90

Los valores crticos vienen tabulados. Rechazaremos la hiptesis de independencia cuando el nmero de rachas sea significativamente grande o pequeo (alta dependencia positiva o negativa).

Captulo 1. Generacin de nmeros aleatorios

Ejemplo. Contrastar la aleatoriedad de la siguiente secuencia de nmeros: 0.2, 0.4, 0.1, 0.3, 0.6, 0.7, 0.5, 0.8, 0.3, 0.2.
Construimos la secuencia de smbolos binarios para contabilizar las rachas:

0.2 0.4 0.1 0.3 0.6 0.7 0.5 0.8 0.3 0.2
1
crec

(n = 10)

0
decr

1
crec

0
decr

1
crec

0
decr

El nmero total de rachas es nr = 6. La distribucin del nmero de rachas en una muestra de tamao 10 debera ser Normal(6.3, 1.45).

P z N (6.3,1.45 ) 6 = P (z N (6.3,1.45 ) 6) + P (z N (6.3,1.45 ) 6 ) = 6 6.3 6 6.3 P z N (0,1) + P z N (0,1) = 1.45 1.45 0 + P (z N (0,1) 0.25) = 1 P (z N (0,1) 0.25) = 1 0.4030 = 0.5987
La probabilidad terica de que el nmero de rachas en la secuencia sea mayor que 6 es 0.5987, por lo que rechazamos la hiptesis de aleatoriedad.

Captulo 1. Generacin de nmeros aleatorios

Contraste de rachas por encima y por debajo de la mediana Otro contraste para calcular rachas se obtiene del recuento de observaciones que se sitan por encima o por debajo de la mediana (en nuestro caso, la mediana ser 0.5). Dada una secuencia de nmeros x1, x2, , xn. 1. Construimos una sucesin de smbolos binarios, asignando un 1 si xi mediana y 0 si xi > mediana. 2. Sea k el nmero de unos en la sucesin (que ser por hiptesis igual al nmero de ceros) e igual a (n-1)/2 si el nmero de observaciones es impar y no hay observaciones repetidas. Contabilizamos el nmero de rachas, nr. En este caso, el nmero total de rachas en una muestra de n observaciones independientes sigue una distribucin aproximadamente normal (si n 40) con parmetros
= k +1 2 =
k (k 1) 2k 1

Captulo 1. Generacin de nmeros aleatorios

Test de Pker Dada una sucesin de nmeros aleatorios en [0,1], x1, x2,..., xn: 1. Consideramos la conversin a los nmeros enteros 1, 2,..., 10 mediante reemplazar xj reemplazar xj reemplazar xj por 1 si por 2 si por 10 si 0.0 xj < 0.1 0.1 xj < 0.2 0.9 xj < 1.0

de modo que el nuevo cjto lo ser de nmeros enteros aleatorios entre 1 y 10. 2. Tomar los conjuntos formados por grupos de 5 ns enteros sucesivos {x5j,x5j+1, ..., x5j+4} y determinar para cada uno cul de los siguientes resultados se cumple: - Se repite el mismo entero 5 veces (denotado con AAAAA, donde A puede ser cualquier entero del 1 al 10)

Captulo 1. Generacin de nmeros aleatorios

- Un entero se repite 4 veces y el otro aparece una sola vez (denotado AAAAB) - Un entero se repite 3 veces y el otro 2 (denotado AAABB) - Un entero se repite 3 veces y los otros dos uno cada vez (denotado AAABC) - Un entero se repite 2 veces, otro entero 2 veces y el tercero 1 vez (denotado AABBC) - Un entero se repite 2 veces y los otros 3 enteros cada uno una vez (denotado AABCD) - Aparecen cinco enteros distintos (ABCDE) Exactamente una de estas posibilidades ocurrir para cada grupo de cinco enteros. Es de esperar que si se da la aleatoriedad, la proporcin de veces que puede ocurrir cada posibilidad vendr dada por la distribucin de probabilidad

Captulo 1. Generacin de nmeros aleatorios

P(AAAAA) = 0.0001 P(AAABB) = 0.0090 P(AABBC) = 0.1080 P(ABCDE) = 0.3024

P(AAAAB) = 0.0045 P(AAABC) = 0.0720 P(AABCD) = 0.5040

El test de pker finaliza con el estudio de la bondad de ajuste a la anterior distribucin basndose para ello en el test de la 2, que utilizar el recuento de estas 7 categoras o particiones para el conjunto generado. Debido a lo baja que es la probabilidad de la categora AAAAA, se suelen juntar las categoras AAAAA y AAAAB considerndose entonces una particin en 6 conjuntos en vez de 7. Si no fuera as, ya que el nmero esperado de ocurrencias de cada categora debe ser al menos 5, se tendra que para la categora AAAAA debera ser (0.0001)(n/5) 5, es decir, contrastar n 250.000 nmeros aleatorios, lo que significara un tamao demasiado grande.

Captulo 1. Generacin de nmeros aleatorios

Una versin ms simple de este contraste que facilita una programacin ms sencilla, Knuth (1998), consiste en encontrar para cada conjunto de 5 enteros su nmero de valores distintos. As, tendramos 5 categoras: 5 valores: todos diferentes 4 valores: un par 3 valores: dos pares o tres iguales 2 valores; cuatro iguales 1 valor: los cinco iguales Esta clasificacin es ms sencilla de obtener de manera sistemtica, siendo el contraste con calidad prxima al de pker. Otros contrastes que se pueden utilizar para la aleatoriedad son el contraste de permutaciones, el contraste de huecos y el contraste de Box-Pierce.

Captulo 1. Generacin de nmeros aleatorios

Ejemplo. Dada la siguiente muestra de 1500 nmeros, realizar el contraste de Pker de aleatoriedad:
0.12 0.23 0.78 0.84 0.16 0.22 0.29 0.47 0.95 0.13 0.33 0.27 0.42 0.32 0.69 0.72 0.17 0.22 0.09 0.81 2 3 8 AABCD 9 2 3 3 5 10 2 4 3 5 4 7 8 2 3 1 9

AABCD

AABCD

ABCDE

X2 =

(8 1.65) 2 (5 2.7) 2 (25 21.6) 2 (65 90.72) 2 + + + .. + = 24.43 + 1.959 + 0.5351 + ... + 7.314 = 37.46 1.65 2.7 21.6 90.72

El nmero de grados de libertad es k-r-1 = 7-0-1 = 6 y de la tabla de la distribucin de la 2 tenemos 20.995(6) = 18.5 > X2 = 37.46, por lo tanto, aceptamos la hiptesis.

Captulo 1. Generacin de nmeros aleatorios

Repeticin de contrastes
Dada una secuencia de nmeros, para contrastar su uniformidad formamos grupos de al menos 40 elementos. A continuacin, para cada uno de los conjuntos formados se calcula el nivel de discrepancia utilizado en el contraste 2. Finalmente, contrastamos (aplicando, por ejemplo, Kolmogorov-Smirnov) que estos valores provienen de una distribucin 2. x1, x2,,x40,x41,,x80,x81,,x120,x121,,x160,x161,,x200,x201,,x220,x221, 23 21 22 24 25 26 provienen de una distribucin 2?

Captulo 1. Generacin de nmeros aleatorios

NDICE
1. 2. Introduccin Contrastes empricos - Uniformidad (Contraste 2 y Kolmogorov-Smirnov) - Aleatoriedad (Rachas, Test de Pker) - Repeticin de contrastes Generadores congruenciales Otros generadores - Registro de desplazamiento - Fibonacci retardados - No lineales - Combinacin de generadores - Generadores paralelos - Generadores comerciales Conclusiones

3. 4.

5.

Captulo 1. Generacin de nmeros aleatorios

3. Generadores congruenciales
Los generadores ms populares son probablemente los congruenciales, debidos a Lehmer (1951). Siguen la frmula de recursin: xn+1 = (a xn+ b) mod m, que proporciona nmeros enteros en [0, m), para un multiplicador a, sesgo b, mdulo m y semilla x0, donde suponemos que a, b{0, 1, ..., m-1}. La utilizacin de la misma semilla llevar a la misma secuencia de ns aleatorios (reproducibilidad y mutabilidad). Se convierten en nmeros uniformes en [0,1) dividiendo por m, Si b = 0, se denominan multiplicativos: xn+1 = a xn mod m, un = xn / m.

A pesar de su aparente simplicidad y previsibilidad, una seleccin cuidadosa de los parmetros (a, b, m) permite obtener de manera eficiente sucesiones de nmeros suficientemente largas y aleatorias para muchos propsitos.

Captulo 1. Generacin de nmeros aleatorios

Consideremos los generadores multiplicativos (b = 0):

caso 4

caso 5

Captulo 1. Generacin de nmeros aleatorios

Algunas observaciones son: 1) Un generador congruencial tiene ciclos. 2) La longitud del ciclo depende de la seleccin de los parmetros (comparar casos 1 y 3). 3) Dentro de selecciones de parmetros que conducen a una misma longitud de ciclo, algunas salidas parecen ms aleatorias que otras (comparar casos 1 y 2). 4) La representacin de los pares (xi, xi+1) sugiere que stos se disponen en un nmero finito de hiperplanos. Trivialmente, el periodo mximo m se alcanza para a = b = 1. (Ejemplo) Adems, cuando b = 0 (generador multiplicativo) el mximo periodo es m-1.

Captulo 1. Generacin de nmeros aleatorios

El periodo depende de la seleccin de a y b, para lo que se dispone de algunos resultados que indicamos aqu: Proposicin: Un generador congruencial tiene periodo mximo m si y slo si: 1) mcd (b, m) = 1; 2) a = 1 mod p para cada factor primo p de m; 3) a = 1 mod 4 si 4 divide a m. Puesto que b tiene en la prctica el efecto de una traslacin, estamos interesados en estudiar resultados para generadores multiplicativos. El valor de m se escoge para que la operacin Y mod m se realice de forma sencilla. Para un ordenador binario, si m = 2, lo nico que debemos hacer para ejecutar tal operacin es retener los ltimos bits de Y. Entonces: Proposicin. Un generador multiplicativo con mdulo m = 2 16 tiene periodo mximo m/4 si y slo si a mod 8 = 3 a mod 8 = 5 y x0 es impar. Tambin hay procedimientos sencillos para el caso m = 2+1 (Ripley, 1987).

Captulo 1. Generacin de nmeros aleatorios

Proposicin. Un generador multiplicativo tiene periodo m-1 slo si m es primo. El periodo divide a m-1 y es m-1 si y slo si a es una raz primitiva de m-1, es decir, a 0, a(m-1)/p 1 mod m, para todos los factores primos p de m-1. Dos elecciones frecuentes son m = 231-1, en ordenadores de 32 bits, y m = 216+1, en ordenadores de 16 bits. Mencionemos que se conocen condiciones computables para determinar races primitivas. De hecho, una vez encontrada una, el resto proviene de: Proposicin. Si a es una raz primitiva de m, ak mod m lo es siempre que mcd(k, m-1) = 1. Entonces, podemos elegir m para que la implementacin del generador sea eficiente y, una vez elegido m, podemos elegir a y b en su caso, para que el generador sea de ciclo mximo.

Captulo 1. Generacin de nmeros aleatorios

Debemos an estudiar con ms detalle tal eleccin, pues tenemos muchos grados de libertad. Para motivar la eleccin, apelamos a nuestra cuarta observacin: un resultado de Marsaglia (1968) demuestra que sucesiones solapantes de n nmeros de un generador multiplicativo caen en, a lo sumo, (n!m)1/n hiperplanos paralelos. (Estructura reticular de un generador) Por ejemplo, tenemos las siguientes cotas en un par de casos representativos

Los ejemplos que utilizamos como introduccin muestran lo psima que puede ser la estructura reticular de estos generadores. Un ejemplo famoso es el de la rutina RANDU, que IBM proporcionaba a mediados de los 70, con m = 231, a = 65539 y b = 0. Para este generador, las tripletas consecutivas de nmeros caen en 15 planos!

Captulo 1. Generacin de nmeros aleatorios

La estructura reticular de estos generadores sugiere cierta previsibilidad en su salida, lo que va en contra de la idea de aleatoriedad. Una posibilidad es, entonces, elegir las constantes del generador para mitigar el problema de la estructura reticular. Tal idea conduce al contraste espectral, basado en calcular la distancia mxima entre los hiperplanos adyacentes, tomndose el mximo sobre el conjunto de todos los hiperplanos paralelos que cubran los puntos. Intuitivamente, cuanto mayor es la distancia, peor es el generador. La idea se ilustra con nuestros casos 4 y 5. En el ejemplo, la salida del generador con a = 7 parece ms aleatoria que la del generador con a = 6. En el primer caso, la mxima distancia es 3.479; en el segundo, es 4.919. Para llevar a cabo el contraste, para k-plas, hemos de resolver el problema de optimizacin Vk = min(12+22++k2)1/2 s.a 1+a2++ak-1k = mq (1, 2,, k, q) Z

Captulo 1. Generacin de nmeros aleatorios

El valor del contraste espectral es m/Vk, ver Ripley (1987) para una demostracin. Tal problema es de programacin entera no lineal, y para su resolucin eficiente hemos de apelar a diversos heursticos, como se expone en Knuth (1981). Resulta, sin embargo, muy costoso para valores de k mayores que 6.

Captulo 1. Generacin de nmeros aleatorios

Generador congruencial estndar Arquitecturas de 32 bits, Park y Miller (1988) 3 criterios para elegir un generador multiplicativo mnimo estndar: 1) Ser de periodo mximo; 2) Que su salida parezca aleatoria; 3) Que se pueda implementar de forma eficiente en aritmtica de 32 bits. Los generadores con m = 2 presentan el inconveniente de la escasa aleatoriedad de los bits de menor orden. Eleccin en boga por la facilidad de implementacin y por ser primo es m =231-1. Los 3 criterios limitan la eleccin de multiplicadores. El multiplicador que se ha convertido en estndar es el asociado a a = 75 =16807. 7 es una raz primitiva de 231-1, por lo que se puede probar que el generador es de periodo mximo.

Captulo 1. Generacin de nmeros aleatorios

Generador congruencial estndar en FORTRAN Para a = 75= 16807 y m = 231-1 = 2147483647 una primera posibilidad es function aleator (isemilla) isemilla= mod (isemilla * 16807.d0, 2147482647.d0) aleator = isemilla / 2147483647 return end Puede dar problemas de desbordamiento pues isemilla* 16807.d0 puede valer hasta 1.03 x 245. Una forma de comprobar el correcto funcionamiento del generador consiste en comenzar con una isemilla inicial igual a 1 y comprobar que despus de 1000 llamadas isemilla toma el valor 1043618065. Mtodo de Schrage (Bratley, Fox y Schrage, 1983). Su idea bsica es realizar la operacin de mdulo antes que el producto.

Captulo 1. Generacin de nmeros aleatorios

Supongamos que escribimos m = aq + r con q = m div a y r = m mod a Entonces tenemos f(z) = az mod m = az m (az div m) + m (z div q) m (z div q) = (z) + m (z) con (z) = a (z mod q) r (z div q) (z) = (z div q) (az div m) Se puede demostrar que si r < q para todo z {0,1,,m-1} resulta 1) (z) {0,1} 2) a (z mod q), r (z div q) {0,1,,m-1} 3) |(z)| m-1 As, puesto que 1 f(z) m-1, resulta (z) = 0 si y solo si 1 (z) m-1 (z) = 1 si y solo si (m-1) (z) -1

Captulo 1. Generacin de nmeros aleatorios

Por tanto, para evaluar f(z), evaluamos (z). Si (z) > 0, hacemos f(z) = (z); en caso contrario f(z) = (z) + m. Por ejemplo, para a = 16807 y m = 2147483647, tenemos q = 127773 y r = 2863, y la implementacin en FORTRAN queda de la siguiente forma: function aleato2 (isemilla) k = isemilla/127773 isemilla = 16807*(isemilla - k*127773) - 2836*k if (isemilla.lt0) isemilla = isemilla + 2147483647 aleato2 = 1./2147483647 *isemilla return end Park y Miller (1988) indican que 23093 multiplicadores permiten la implementacin en 32 bits, y entre ellos est 16807, como hemos visto.

Captulo 1. Generacin de nmeros aleatorios

Fishman y Moore (1986) utilizaron el contraste espectral para seleccionar buenos multiplicadores. Para ello consideran un multiplicador como bueno si para 2k6 y cada conjunto de hiperplanos paralelos, la distancia eucldea entre hiperplanos adyacentes no supera la mnima distancia alcanzable en ms del 25%. Identificaron as 410 multiplicadores, que no incluyen a los 23093 anteriores. Fishman realiz recientemente una bsqueda exhaustiva de los 23093 anteriores con un criterio del 30%, encontrando varios buenos multiplicadores, entre ellos 16807, aunque, por ejemplo, a = 48271 y a = 69621 parecen ser mejores. Sin embargo, dada la mayor experiencia con a = 16807 an se suele proponer tal multiplicador como el estndar. Para una discusin ms detallada ver Park y Miller (1988) y Press et al (1992). A pesar de estas buenas propiedades, se han diseado contrastes muy potentes que permiten rechazar la aleatoriedad de los generadores congruenciales (L'Ecuyer, 1994). Tales contrastes explotan la estructura reticular de estos generadores. Por ello y por la necesidad de disponer de generadores de periodo ms largo, describimos algunos otros intentos de definir buenos generadores.

Captulo 1. Generacin de nmeros aleatorios

NDICE
1. 2. Introduccin Contrastes empricos - Uniformidad (Contraste 2 y Kolmogorov-Smirnov) - Aleatoriedad (Rachas, Test de Pker) - Repeticin de contrastes Generadores congruenciales Otros generadores - Registro de desplazamiento - Fibonacci retardados - No lineales - Combinacin de generadores - Generadores paralelos - Generadores comerciales Conclusiones

3. 4.

5.

Captulo 1. Generacin de nmeros aleatorios

4. Otros generadores 4.1. Generadores de Registro de Desplazamiento


Los generadores congruenciales pueden generalizarse a recursiones lineales de orden mayor. Para k 1, m primo xn = (a1xn-1++akxn-k) mod m y el generador se denomina recursivo mltiple. (Lecuyer, 1994) Su estudio se asocia al estudio del polinomio caracterstico P(z) = zk - a1zk-1 - - ak sobre el lgebra finita Fm con m elementos. Cuando el polinomio es primitivo, Niederreiter (1992), el periodo del generador es mk-1. El estudio de tales polinomios y la implementacin del generador cuando m es grande no es sencillo, por lo que se escoge m pequeo, habitualmente 2, dado que permite una sencilla implementacin.

Captulo 1. Generacin de nmeros aleatorios

Parece ser que estos generadores tienen buenas propiedades de aleatoriedad, sin embargo, producen estructuras reticulares, como los congruenciales, lo que ha llevado a una cierta polmica y disuasin sobre su calidad. Ejemplo. Tomando m = 2 tenemos el generador xn = (a1xn-1++akxn-k) mod 2, donde a1,,ak {0,1}, que es equivalente a reescribir xn = xn-j1 XOR xn-j2 XOR XOR xn-jk cuando an-j1 = an-j2 = = an-jk = 1 y aj = 0 para los otros j. Una eleccin habitual es escoger polinomios de la forma P(z) = zk - zk-r - 1 o equivalentemente xn = xn-r XOR xn-k Valores habituales para k y n (garantizan un ciclo mximo): k = 607 r = 273 o xn = xn-273 XOR xn-607 xn = xn-32 XOR xn-521 k = 521 r = 32

Captulo 1. Generacin de nmeros aleatorios

4.2. Generadores de Fibonacci Retardados


Se trata de otra generalizacin de los generadores congruenciales y parten de la semilla inicial (x1, x2,..., xr) y usan la recursin xi = xi-r xi-s , donde r y s son retardos enteros que satisfacen r > s y es una operacin binaria que suele ser +, -, o XOR. Tpicamente, los elementos iniciales son enteros y la operacin binaria es la suma mdulo 2n. La caracterizacin del periodo mximo de los generadores de Fibonacci retardados se basa en el anlisis de sucesiones lineales recursivas de enteros de la forma xi = (a1xi-1+ a2xi-2++ arxi-r) mod m Marsaglia (1985). Cuando r = 17, s = 5 y se escoge la operacin + - sobre los enteros mod 2n, el periodo es (217-1)2n-1 . Cuando es XOR, el periodo es 217-1. La implementacin de un generador de este tipo es sencilla mediante una lista circular y dos punteros.

Captulo 1. Generacin de nmeros aleatorios

4.3. Generadores no lineales


Dada la estructura reticular de los generadores lineales, se sugiere utilizar generadores no lineales. Se distinguen dos formas de introducir no linealidad: 1. Usar un generador con funcin de transicin lineal, produciendo la salida mediante una transformacin no lineal del estado. 2. Usar un generador con funcin de transicin no lineal. No producen una estructura reticular como la de los lineales. Su estructura es altamente no lineal: tpicamente, un hiperplano t-dimensional tendr a lo sumo t t-uplas solapantes de nmeros. Niederreiter (1992) proporciona estudios tericos sobre su estructura que sugiere sus buenas propiedades tericas. Sin embargo, no existen an implementaciones rpidas con parmetros bien contrastados, aunque el mtodo que parece ms prometedor, ver Eichenauer-Herrmann (1995), es el denominado mtodo congruencial de inversin explcita.

Captulo 1. Generacin de nmeros aleatorios

Mtodo congruencial de inversin explcita Sea m 5 un nmero primo y Fm={0,1,,m-1} el lgebra finita de orden m. Para un entero z, se define z Fm, z zm-2 mod m

que es la inversa de z para la multiplicacin en Fm, si z 0 mod m. Existen algunos algoritmos eficientes para su clculo. Dados a, b Fm, a 0, la sucesin es Su periodo mximo es m. yn = a n + b n0

Captulo 1. Generacin de nmeros aleatorios

4.4. Combinacin de generadores


Para incrementar el periodo e intentar evitar las regularidades que muestran los generadores lineales congruenciales se ha sugerido combinar diferentes generadores para obtener uno hbrido, que sea de mayor calidad que los anteriores. Tales combinaciones pueden considerarse heursticas, algunas con resultado bastante pobre. El fundamento es esencialmente emprico, aunque tambin se han desarrollado algunos aspectos tericos. 1) Se ha observado que el periodo de un generador hbrido es, en general, bastante ms largo que el de sus componentes siendo, adems, posible su determinacin. 2) Hay resultados tericos que sugieren que algunas formas de combinacin de generadores mejoran su comportamiento estadstico. Por ejemplo, consideremos dos sucesiones aleatorias (xn), (yn) y la sucesin combinada elemento a elemento de ambas (zn), donde zn = xn yn y representa alguna operacin binaria.

Captulo 1. Generacin de nmeros aleatorios

Ideas bsicas para combinar generadores son el barajeo y composicin. Un anlisis terico de esta familia se ha llevado a cabo con esquemas bastante simples, por lo que no hay garanta de suficiente calidad, aunque algunos contrastes sugieren potencialidad de estas ideas. Permutacin fija (barajeo): Se generan los nmeros en bloques de longitud L y se aplica una permutacin fija a cada bloque antes de su uso. Permutacin aleatoria (barajeo): (MacLaren y Marsaglia, 1965): consiste en aplicar una permutacin aleatoria a una sucesin. Si tenemos dos sucesiones aleatorias (un), (vn) y T(0),...,T(k-1) estn inicialmente ocupados por los valores u1,...,uk, en cada etapa utilizamos vn para seleccionar aleatoriamente un elemento de T: hacemos J = ent (kvk+1), salimos con T(J) y lo reemplazamos con un+1.

Captulo 1. Generacin de nmeros aleatorios

Ejemplo (permutacin aleatoria, barajeo) Partimos de dos sucesiones aleatorias: (un) (vn) 0.7 0.2 0.32 0.84 0.25 0.12 0.33 0.47 0.84 0.72 0.1 0.7 0.23 0.42 0.35 0.21 0.47 0.72 0.68 0.12

Tomamos k = 5 y hacemos T(0) = u1 = 0.7 T(1) = u2 = 0.2

T(3) = 0.32

T(4) = 0.84

T(5) = 0.25

Tomamos valores de la segunda secuencia aleatoria y construimos los ndices que me sealarn los elemento de T que debemos devolver, a la vez que actualizo T: v1=0.1 j =ent(10.1)=0 Hago T(0) = u6 = 0.12 v2=0.7 j =ent(20.7)=1 Hago T(1) = u7 = 0.33 . j=0 j=1 el valor que debemos devolver es T(0) = 0.7 el valor que debemos devolver es T(1) = 0.2

Captulo 1. Generacin de nmeros aleatorios

L'Ecuyer (1988) describe la composicin de generadores congruenciales lineales multiplicativos de orden k = 1 con mdulos primos distintos m1,...,mI. Si xin denota el estado del generador i-simo en la etapa n, se define la combinacin zn = I (i=1 i xin) mod m1 para algunos enteros i, que suelen tomar la forma (-1)i-1 .

1 xn+1= a xn1 mod m1

I xn+1= a xnI mod mI

1 xn+1

I xn+1

i I zn+1 = (i=1 i xn+1) mod m1

Captulo 1. Generacin de nmeros aleatorios

4.5. Generadores Paralelos


La migracin hacia arquitecturas paralelas van haciendo necesaria una adaptacin y una revisin de los procedimientos actuales de generacin de ns aleatorios. La forma ms simple y obvia de generar nmeros aleatorios con procesamiento en paralelo es utilizar un solo generador fuente. La situacin ms sencilla se da cuando se considera un punto nico de comienzo para ese generador, que proporcionar nmeros a todos los procesadores que los necesiten. Hay dos inconvenientes. 1) A menos que haya una sincronizacin en la generacin de los nmeros aleatorios no ser posible garantizar que todos los procesos particulares reciban siempre la misma secuencia exacta de nmeros. 2) Para sistemas paralelos basados en "paso de mensajes" puede haber un aumento considerable de gasto en la transmisin de los nmeros generados a los procesos que los necesitan.

Captulo 1. Generacin de nmeros aleatorios

Una forma sencilla de crear generadores separados para conjuntos de procesos consiste en utilizar puntos de comienzo predeterminados, es decir, utilizar un nico generador comn con un conjunto de semillas preseleccionadas para cada proceso. La ventaja de este procedimiento es que todos los procesos usan el mismo cdigo, aunque las sucesiones generadas y utilizadas por cada uno sern distintas.

Captulo 1. Generacin de nmeros aleatorios

4.6. Generadores Comerciales


Artculo de Park y Miller (1988) como advertencia sobre la mala calidad de algunos generadores comerciales. IMSL implementa generadores multiplicativos de mdulo m = 231-1 y multiplicadores a = 16807, 397204094 y 950706376. El lenguaje de simulacin SIMSCRIPT II.5 implementa el mismo tipo de generador con multiplicador a = 630360016, proporcionando semillas suficientemente separadas para producir sucesiones independientes. Press et al (1992) incluyen, entre otros, el generador mnimo estndar, el generador mnimo estndar barajado segn el mtodo de Bays-Durham y el generador de L'Ecuyer, barajado segn el mismo mtodo. El entorno estadstico S-PLUS implementa el algoritmo Super-Duper de Marsaglia, basado en un generador multiplicativo y un generador de Taustworthe.

Captulo 1. Generacin de nmeros aleatorios

Las revistas Communications of ACM y Applied Statistics publican a menudo nuevos algoritmos de generacin de nmeros aleatorios. http://www.stat.cmu.edu/

Captulo 1. Generacin de nmeros aleatorios

NDICE
1. 2. Introduccin Contrastes empricos - Uniformidad (Contraste 2 y Kolmogorov-Smirnov) - Aleatoriedad (Rachas, Test de Pker) - Repeticin de contrastes Generadores congruenciales Otros generadores - Registro de desplazamiento - Fibonacci retardados - No lineales - Combinacin de generadores - Generadores paralelos - Generadores comerciales Conclusiones

3. 4.

5.

Captulo 1. Generacin de nmeros aleatorios

6. Conclusiones Hemos dado las ideas bsicas sobre los principales generadores utilizados hasta ahora: lineales congruenciales, de registro de desplazamiento y de Fibonacci retardados. Tales tipos de generadores destacan porque su teora est bien desarrollada, se han contrastado en profundidad sus implementaciones y se utilizan en gran medida. Algunos generadores no lineales son tambin prometedores. Como recomendacin general, sera deseable contrastar el generador que se va a usar en una aplicacin; en caso de duda, podra usarse el generador mnimo estndar sugerido, o si se desean periodos ms largos, algn otro de los generadores aqu descritos.

Captulo 1. Generacin de nmeros aleatorios

Referencias
Bays, C. y Durham, S. (1976), Improving a Poor Random Number Generator, ACM Trans. Math. Soft., 2, 59-64. Bowman, K. y Robinson, M. (1987), Studies of Random Number Generators for Parallel Processing, en Heath (ed), Proc. 2nd. Conf. on Hypercube Multiprocessors, SIAM, 445-453. Deng, L.-Y. y Lin, D.K.J. (2000), Random Numbers Generation for the new Century, The American Statistician 54, 2, 145-150. Eddy, W. (1990), Random Number Generators for Parallel Processors, Jour. Comp. Appl. Mathematics 31, 63-71. Eichenauer-Herrman. J. (1995), Inversive Congruential Pseudorandom Number Generators, Int. Stat. Rev. 63, 167-176. Hacking, I. (1965), The Logic of Statistical Infernce, Cambridge UP. Knuth, D. (1981), The Art of Computer Programming, Vol 2: Seminumerical Algorithms, Add. Wesley. Kolmogorov, A. y Uspenskii, V. (1987), Algorithms and Randomness, Theor. Applic. Prob. 32, 389-412. L'Ecuyer, P. (1988), Efficient and Portable Combined Random Number Generators, Comm. ACM 31, 742749.

Captulo 1. Generacin de nmeros aleatorios

Lehmer, D. (1951), Mathematical Methods in Large-Scale Computing Units, Proc. 2nd Symp. Large Scale Digital Calculation, Harvard U.P. Lewis, T. y Payne, P. (1994), Uniform Random Number Generators, J. Comp. Mach. 12, 83-89. MacLaren, M. y Marsaglia, G. (1965), Uniform Random Number Generators, Jour. Assoc. Comp. Mach. 12, 83- 89. Marsaglia, G. (1968), Random Numbers Fall Mainly in the Planes, Proc. Nat. Acad. Sci. 61, 25-28. Marsaglia, G. (1977), The Squeeze Method for Generating Gamma Variates, Comp. Math. Appl. 3, 321325. Marsaglia, G. (1985), A Current View of Random Number Generators, en Billard (ed) Computer Science and Statistics, Proc. 16th Symp. on the Interface, North Holland, 3-10. Niederreiter, H. (1992), Random Number Generation and Quasi-Monte Carlo Methods, SIAM. Park, S. y Miller, K. (1988), Random Number Generators: Good Ones Are Hard to Find, Comm. ACM 31, 1192-1201. Press, W. H., Teukolvsky, S. A., Vetterling, W. T. y Flannery, B. P. (1992), Numerical Recipes in FORTRAN: the Art of Scientific Computing, Cambridge University Press.

Captulo 1. Generacin de nmeros aleatorios

Ros, S. (1980), Mtodos Estadsticos, McGraw Hill. Ros Insua, D., Ros Insua, S. y Martn (1997), Simulacin: Mtodos y Aplicaciones, RA-MA, Madrid. Ripley, B. (1987), Stochastic Simulation, Wiley. Schruben, L. y Margolin, B. (1978), Pseudo-random Number Assignment in Statistically Designed Simulation and Distribution Sampling Experiments, Jour. Amer. Stat. Assoc. 73, 504-525. Tautsworthe, R. (1965), Random Numbers Generated by Linear Recurrence Modulo Two, Math. Comp. 19, 201-209. Thompson, J.R. (1999), Simulation: A Modeler's Approach, Wiley.

Вам также может понравиться