Metodos Modernos De Generacion De Pseudoaleatoros'.pdf

28
MÉTODOS DE SIMULACIÓN Capítulo 1. Generación de números aleatorios Capítulo 1. Generación de números aleatorios ÍNDICE 1. Introducción 2. Contrastes empíricos - Uniformidad (Contraste χ 2 y Kolmogorov-Smirnov) - Aleatoriedad (Rachas, Test de Póker) - Repetición de contrastes 3. Generadores congruenciales 4. Otros generadores - Registro de desplazamiento - Fibonacci retardados - No lineales - Combinación de generadores - Generadores paralelos - Generadores comerciales 5. Conclusiones

Transcript of Metodos Modernos De Generacion De Pseudoaleatoros'.pdf

  • MTODOS DE SIMULACIN

    Captulo 1. Generacin de nmeros aleatorios

    Captulo 1. Generacin de nmeros aleatorios

    NDICE

    1. Introduccin2. Contrastes empricos

    - Uniformidad (Contraste 2 y Kolmogorov-Smirnov)- Aleatoriedad (Rachas, Test de Pker)- Repeticin de contrastes

    3. Generadores congruenciales4. Otros generadores

    - Registro de desplazamiento- Fibonacci retardados- No lineales- Combinacin de generadores- Generadores paralelos- Generadores comerciales

    5. Conclusiones

  • 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 alea-torizados, verificacin de algoritmos, complejidad de algoritmos, criptografa,...), de la Estadstica (mtodos de muestreo y remuestreo, contrastes Montecarlo, Infe-rencia 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 comer-ciales 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 sufi-cientes nmeros para nuestro experimento de simulacin.

    Orgenes histricos.

    Tablas de nmeros aleatorios: Tippet (1927): Universidad de Cambridge, 10.000 nmeros aleatorios de 4 dgi-

    tos 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 me-

    canismos 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 aritmti-cas del ordenador: partiendo de una semilla inicial (u0, u1,..., u-p+1), generar una su-cesin 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 rele-vantes 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 empricosBondad de ajuste o uniformidad

    Contraste 2

    El contraste 2 de Pearson es el ms antiguo y vlido para distribuciones conti-nuas 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 fun-cin de distribucin Fn(x) desconocida y deseamos contrastar la hiptesis

    H0: Fn(x) = F0(x),

    para todo xR, donde F0(x) est completamente especificada (conocemos la dis-tribucin 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. 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.

    2. 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 me-diante el modelo F0(x):

    que se distribuye aproximadamente como una 2 cuando el modelo es correcto.

    4. 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.

    5. Rechazamos el modelo cuando X2 2(k r 1) para un nivel de significacin pequeo (0.05, 0.01, 0.001).

    =

    =k

    i i

    ii

    EEOX

    1

    22 )(

    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.

    Cuadrcula 0 1 2 3 4 5

    Frec. Impactos 229 211 93 35 7 1

    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 cua-drcula durante un bombardeo alemn. Los resultados fueron:

    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 pro-duzca en cada una de las clases. Dicha probabilidad toma la forma siguiente para una distri-bucin de Poisson

    por lo tanto, necesitamos estimar un parmetro mediante el principio de mxima verosi-militud, siendo r = 1. Hacemos

    !iep

    i

    i=

    929.0576535 ===

    j

    jj

    OOx

    Obtenemos las frecuencias esperadas de las clases: E0 = n p0 = 227.5 E1 = n p1 = 211 E2 = n p2 = 98 E3 = n p3 = 30 E4 = n p4 = 7 E5 = n p5 = 1.5

    La discrepancia entre frecuencias observadas y esperadas es:

    ( ) ( ) ( ) 27.11

    15.1...211

    2112115.227

    5.227229 2222 =+++=X

    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 si x < x(1)r/n si x(r) x < x(r+1)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= supx R |Fn(x) - F0(x)|.

    La distribucin exacta de Dn est tabulada para valores seleccionados de n 40 y del ni-vel de significacin .

  • = n

    ixxniD iinin

    1,maxmax )()(1

    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 or-den, F0(x(i)) = x(i) , y como Fn(x(i)) = i/n , resulta

    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:

    0.10.20.30.40.50.60.70.80.91.0

    10 15 20 255

    Funcin de distribucin exponencialxexF = 1)(0

    Estimamos el parmetro a partir de la media muestral:

    /15.1110

    24...12816 ==++++

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

  • Captulo 1. Generacin de nmeros aleatorios

    Aleatoriedad o Independencia Estadstica

    902916

    312 2 == nn

    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 0si xi > xi+1.

    2. Definimos como racha creciente (decreciente) de longitud l a un grupo de lunos (0s) consecutivos. Contabilizamos el nmero de rachas, que denotaremos como nr.

    Puede comprobarse que el nmero total de rachas en una muestra de n observa-ciones independientes sigue una distribucin aproximadamente normal (si n 40) con parmetros

    Captulo 1. Generacin de nmeros aleatorios

    ?90

    2916,3

    12

    rnnNnzP

    3. Comprobamos si el nmero total de rachas observadas puede provenir con una probabilidad razonable de dicha distribucin

    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 (n = 10)

    1 1 1 1 10 0 0 0crec crec crecdecr decr 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).

    ( )( ) ( )( ) ( )( )( ) ( )

    ( )( ) ( )( )5987.04030.01

    25.0125.0045.1

    3.6645.1

    3.66

    666

    1,01,0

    1,01,0

    45.1,3.645.1,3.645.1,3.6

    ===+=

    +

    =+=

    NN

    NN

    NNN

    zPzP

    zPzP

    zPzPzP

    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

    12)1(1

    =+=kkkk 2

    Contraste de rachas por encima y por debajo de la mediana

    Otro contraste para calcular rachas se obtiene del recuento de observaciones quese sitan por encima o por debajo de la mediana (en nuestro caso, la mediana ser0.5). Dada una secuencia de nmeros x1, x2, , xn.

    1. Construimos una sucesin de smbolos binarios, asignando un 1 si xi medianay 0 si xi > mediana.

    2. Sea k el nmero de unos en la sucesin (que ser por hiptesis igual al nmerode ceros) e igual a (n-1)/2 si el nmero de observaciones es impar y no hay ob-servaciones repetidas. Contabilizamos el nmero de rachas, nr.

    En este caso, el nmero total de rachas en una muestra de n observaciones inde-pendientes sigue una distribucin aproximadamente normal (si n 40) con par-metros

  • 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 por 1 si 0.0 xj < 0.1reemplazar xj por 2 si 0.1 xj < 0.2

    reemplazar xj por 10 si 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(AAAAB) = 0.0045P(AAABB) = 0.0090 P(AAABC) = 0.0720P(AABBC) = 0.1080 P(AABCD) = 0.5040P(ABCDE) = 0.3024

    El test de pker finaliza con el estudio de la bondad de ajuste a la anterior distribu-cin basndose para ello en el test de la 2, que utilizar el recuento de estas 7 ca-tegoras 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 sen-cilla, Knuth (1998), consiste en encontrar para cada conjunto de 5 enteros su n-mero 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 9 2 3 3 5 10 2 4 3 5 4 7 8 2 3 1 9

    AABCD AABCD AABCD ABCDE

    46.37314.7...5351.0959.143.2472.90

    )72.9065(..6.21

    )6.2125(7.2

    )7.25(65.1

    )65.18( 22222 =++++=++++=X

    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.

    Repeticin de contrastes

    Captulo 1. Generacin de nmeros aleatorios

    Dada una secuencia de nmeros, para contrastar su uniformidad formamos gru-pos de al menos 40 elementos.

    x1, x2,,x40,x41,,x80,x81,,x120,x121,,x160,x161,,x200,x201,,x220,x221,

    A continuacin, para cada uno de los conjuntos formados se calcula el nivel de discrepancia utilizado en el contraste 2.

    21 22 23 24 25 26

    provienen de una distribucin 2?

    Finalmente, contrastamos (aplicando, por ejemplo, Kolmogorov-Smirnov) que estos valores provienen de una distribucin 2.

  • Captulo 1. Generacin de nmeros aleatorios

    NDICE

    1. Introduccin2. Contrastes empricos

    - Uniformidad (Contraste 2 y Kolmogorov-Smirnov)- Aleatoriedad (Rachas, Test de Pker)- Repeticin de contrastes

    3. Generadores congruenciales4. Otros generadores

    - Registro de desplazamiento- Fibonacci retardados- No lineales- Combinacin de generadores- Generadores paralelos- Generadores comerciales

    5. Conclusiones

    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, m-dulo 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, un = xn / m.

    Si b = 0, se denominan multiplicativos: xn+1 = a xn mod 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 nme-ros suficientemente largas y aleatorias para muchos propsitos.

    Captulo 1. Generacin de nmeros aleatorios

  • 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 senci-lla. Para un ordenador binario, si m = 2, lo nico que debemos hacer para ejecu-tar 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 efi-ciente y, una vez elegido m, podemos elegir a y b en su caso, para que el gene-rador 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 nme-ros de un generador multiplicativo caen en, a lo sumo, (n!m)1/n hiperplanos para-lelos. (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 media-dos 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 sa-lida, 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, basa-do 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/2s.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 gene-rador 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 gene-rador 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 + rcon

    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} resulta1) (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 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 *isemillareturn

    end

    Park y Miller (1988) indican que 23093 multiplicadores permiten la implementa-cin en 32 bits, y entre ellos est 16807, como hemos visto.

    Por tanto, para evaluar f(z), evaluamos (z). Si (z) > 0, hacemos f(z) = (z); en caso contrario f(z) = (z) + m.

    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 em-bargo, dada la mayor experiencia con a = 16807 an se suele proponer tal multi-plicador 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 gene-radores. 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. Introduccin2. Contrastes empricos

    - Uniformidad (Contraste 2 y Kolmogorov-Smirnov)- Aleatoriedad (Rachas, Test de Pker)- Repeticin de contrastes

    3. Generadores congruenciales4. Otros generadores

    - Registro de desplazamiento- Fibonacci retardados- No lineales- Combinacin de generadores- Generadores paralelos- Generadores comerciales

    5. Conclusiones

    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 caractersticoP(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 equi-valentemente xn = xn-r XOR xn-k

    Valores habituales para k y n (garantizan un ciclo mximo):

    k = 607 r = 273 k = 521 r = 32o

    xn = xn-273 XOR xn-607 xn = xn-32 XOR xn-521

    4.2. Generadores de Fibonacci Retardados

    Se trata de otra generalizacin de los generadores congruenciales y parten de la se-milla inicial (x1, x2,..., xr) y usan la recursin xi = xi-r xi-s , donde r y s son re-tardos 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

  • Captulo 1. Generacin de nmeros aleatorios

    4.3. Generadores no lineales

    Dada la estructura reticular de los generadores lineales, se sugiere utilizar genera-dores 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 alta-mente no lineal: tpicamente, un hiperplano t-dimensional tendr a lo sumo t t-uplassolapantes 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 esyn = a n + b n 0

    Su periodo mximo es m.

  • Captulo 1. Generacin de nmeros aleatorios

    4.4. Combinacin de generadores

    Para incrementar el periodo e intentar evitar las regularidades que muestran los ge-neradores 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 elemen-to 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 contras-tes 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 a-leatorias (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) 0.7 0.2 0.32 0.84 0.25 0.12 0.33 0.47 0.84 0.72 (vn) 0.1 0.7 0.23 0.42 0.35 0.21 0.47 0.72 0.68 0.12

    Tomamos k = 5 y hacemosT(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 j = 0 el valor que debemos devolver es T(0) = 0.7Hago T(0) = u6 = 0.12

    v2=0.7 j =ent(20.7)=1 j = 1 el valor que debemos devolver es T(1) = 0.2Hago T(1) = u7 = 0.33.

    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 deno-ta el estado del generador i-simo en la etapa n, se define la combinacin zn = (i=1 i xin) mod m1 para algunos enteros i, que suelen tomar la forma (-1)i-1 .

    xn+1= a xn mod m1 xn+1= a xn mod mII I1 1

    xn+11 xn+1

    I

    zn+1 = (i=1 i xn+1) mod m1iI

    I

  • 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 comienzopara 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 genera-dos 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 algu-nos generadores comerciales.

    IMSL implementa generadores multiplicativos de mdulo m = 231-1 y multiplica-dores a = 16807, 397204094 y 950706376.

    El lenguaje de simulacin SIMSCRIPT II.5 implementa el mismo tipo de genera-dor con multiplicador a = 630360016, proporcionando semillas suficientemente separadas para producir sucesiones independientes.

    Press et al (1992) incluyen, entre otros, el generador mnimo estndar, el genera-dor 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 Marsa-glia, 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. Introduccin2. Contrastes empricos

    - Uniformidad (Contraste 2 y Kolmogorov-Smirnov)- Aleatoriedad (Rachas, Test de Pker)- Repeticin de contrastes

    3. Generadores congruenciales4. Otros generadores

    - Registro de desplazamiento- Fibonacci retardados- No lineales- Combinacin de generadores- Generadores paralelos- Generadores comerciales

    5. Conclusiones

    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 desarrolla-da, 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

  • 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 Statis-tician 54, 2, 145-150.

    Eddy, W. (1990), Random Number Generators for Parallel Processors, Jour. Comp. Appl. Mathematics31, 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, 742-749.

    Captulo 1. Generacin de nmeros aleatorios

    Lehmer, D. (1951), Mathematical Methods in Large-Scale Computing Units, Proc. 2nd Symp. LargeScale 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, 321-325.

    Marsaglia, G. (1985), A Current View of Random Number Generators, en Billard (ed) Computer Scienceand 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 FOR-TRAN: 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 Simu-lation 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.