P. 1
Métodos congruenciales

Métodos congruenciales

|Views: 142|Likes:
Publicado porJavier Ochoa

More info:

Published by: Javier Ochoa on Nov 12, 2013
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOCX, PDF, TXT or read online from Scribd
See more
See less

08/20/2014

pdf

text

original

Técnicas para generar números aleatorios

MÉTODOS CONGRUENCIALES
Los principales generadores de números pseudo-aleatorios utilizados hoy en día son los llamados generadores congruenciales lineales, introducidos por Lehmer en 1951. Un método congruencial comienza con un valor inicial (semilla) x0, y los sucesivos valores xn,n > 1 se obtienen recursivamente con la siguiente fórmula:

xn = axn-1 + b modulo m,
donde a, m y b son enteros positivos que se denominan, respectivamente, el multiplicador, el modulo y el incremento. Si b = 0, el generador se denomina multiplicativo; en caso contrario se llama mixto. La sucesión de números pseudo-aleatorios un,n > 1 se obtiene haciendo u, = Como el siguiente resultado demuestra, cada xi esta completamente caracterizado por a,b,m y x0.

Proposición 1.3. Los valores generados por un método congruencial verifican: xn = anx0 + b mod m
an —

1

a–1

Demostración.
Para n =1, tenemos que xi = ax0 + b mod m, lo que implica que existe k E Z+ tal que km + x1 = ax0 + b. Ahora, para n = 2, se tiene que x2 = = = = Por recurrencia, se tiene que

ax1 + b mod m a(ax0 + b — km) + b mod
a2x0 + b(a + 1) — akm mod m a2x0 + b(a + 1) mod m. m

x = a x + b(a + a + 1) mod m
3 2 3 0

x = a x + b(a - 1 + …. + a + 1) mod m
n n n 0

= ax + b
n 0

Ejemplo 1. La segunda objeciín es que los valores u pueden tomar sílo los valores 0. Consideremos el generador congruencial xn = 5xn-1 + 1 mod 9 con x0 = 1. . el conjunto de posibles valores es suficientemente denso en [0.4. es que la sucesión de los valores xn no es en absoluto aleatoria. posteriormente veremos que si elegimos las parámetros iniciales convenientemente. Ejemplo Consideremos el generador congruencial xn = 5xn-1 + 3 mod 16.1] como para que la sucesión asemeje a la de una variable continua uniforme en dicho intervalo. objeción común a todos los generadores de numeros pseudo-aleatorios.Técnicas para generar números aleatorios Por lo tanto. pues produce un ciclo de longitud 6 < . por ejemplo entre m y m. Tomando m suficientemente grande m > 10 9. Se observa que el generador del ejemplo 1. la sucesión {un} puede asemejarse a una sucesión de números aleatorios. mm. con xo = 7.4 no es adecuado. luego no hay posibilidad de generar un valor. . Sin embargo. . . la primera objeción que se le puede hacer a este método. m-1.

Sin embargo.5.1].7 Un generador congruencial multiplicativo no puede tener periodo completo Es evidente que es necesario que m sea grande con el fin de un periodo largo y una alta densidad en el intervalo [0. y los k dígitos que quedan se corresponden precisamente con H mod 2k. sea cual sea x0 E { 1 .Un generador congruencial tiene periodo completo si y solo si se cumplen las siguientes condiciones: 1. entonces q divide a a . el periodo resultante es 2. Sin embargo.5 la longitud de ciclo coincide exactamente con el módulo. . la longitud de ciclo puede depender de la semilla utilizada. Una elección de m adecuada computacional.6. Sin embargo. entonces 4 divide a a . Controlario 1. la operación de dividir por m y calcular el resto es relativamente lenta. El hecho de que esta elección sea ventajosa reside en que nos podemos aprovechar del desbordamiento de datos (integer overflow) para no tener que realizar la operación del generador explícitamente. se dice que el generador es de ciclo completo. propuesto por Hull y Dobell (1962) proporciona un caracterización en este sentido. si un generador no es de ciclo completo. . Si en el ejemplo 1.1.mente es m = 2k. lo cual es inevitable.Técnicas para generar números aleatorios m = 9 (la longitud de ciclo de un operador se denomina periodo). El siguiente teorema. m y b son primos entre si.8 Para ilustrar como aprovechar el desbordamiento de datos en el generador del ejemplo 1. Teorema 1. se perderían los h — k dígitos binarios más a la izquierda. Ejemplo 1. .1. el ciclo siempre tendrá periodo m y se producirá en el mismo orden. en el generador del ejemplo 1. En este caso. . entonces el mayor entero que puede ser representado es 2k — 1 y en cualquier intento de representar un entero mayor H. De los ejemplos anteriores se desprende que una cuestión de interés es como elegir los parámetros del generador de forma que este tenga ciclo completo. que ocuparía h > k dígitos binarios. 3. pues es evidente que el periodo nunca puede exceder al módulo. . Si q es un numero primo que divide a m. m}. donde k-bits es el tamaño de palabra (unidad básica de trabajo) del microprocesador. Obsérvese que un generador sea de ciclo completo es independiente de la semilla que se utilice.4 utilizamos x0 = 5 o x0= 8. 2. Si 4 divide a m. La cuestión es que si tenemos una máquina de k-bits.

Como nuestra capacidad es de 4 bits. han sido objeto de más estudio y actualmente se utilizan más que los mixtos. que en binario es 1001001. quedando 1001 que es la representación binaria de x10 = 9. Los generadores multiplicativos tienen la ventaja computacional de que no es necesario la suma de la constante b. no pueden tener periodo completo. Afortunadamente. no pueden tener periodo completo. Afortunadamente. Los generadores multiplicativos se introdujeron antes que los mixtos. Los generadores multiplicativos tienen la ventaja computacional de que no es necesario la suma de la constante b. Corolario 1. como hemos visto. Observemos que 5x14 + 3 = 73. . pero. la mejor forma de elegir el modulo desde el punto de vista computacional es tomar m = 2k. Corolario 1. han sido objeto de más estudio y actualmente se utilizan mas que los mixtos. Observemos que 5x14 + 3 = 73. Un generador congruencial con m = 2k > 4 tiene periodo completo si y solo si b es impar y 1 = a mod 4. es posible obtener periodo m — 1 si m y a se eligen adecuadamente. quedando 1001 que es la representación binaria de x10 = 9.9. el desbordamiento de datos produce que se pierdan los tres primeros dígitos. Al igual que los generadores mixtos.Técnicas para generar números aleatorios veamos cómo generar x10 = 9 a partir de x9 = 14. en este caso. como hemos visto. Como nuestra capacidad es de 4 bits. pero.9. que en binario es 1001001. el periodo máximo posible será una cuarta parte del módulo. Los generadores multiplicativos se introdujeron antes que los mixtos. Sin embargo. el desbordamiento de datos produce que se pierdan los tres primeros dígitos. Un generador congruencial con m = 2k > 4 tiene periodo completo si y solo si b es impar y 1 = a mod 4. es posible obtener periodo m — 1 si m y a se eligen adecuadamente.

Sin embargo. Dicho periodo maximal se alcance si y solo si x0 es impar y 3 = a mod 8 o 5 = a mod 8 Un generador multiplicativo muy utilizado. 2. Sea t la longitud de un ciclo maximal de un generador congruencial multiplicativo. Proposición 1. en este caso. 3. . entonces t divide a m — 1. la mejor forma de elegir el modulo desde el punto de vista computacional es tomar m = 2k. Debido a los problemas que surgen de elegir m = 2k en los generadores multiplicativos.Técnicas para generar números aleatorios Al igual que los generadores mixtos. Si m es primo. entonces t = m — 1 si y sólo si a es una raóz primitiva de m (a es una raíz Primitiva tal que 1 = Los generadores multiplicativos mas famosos utilizados por IBM tomaban m = 2 31 — 1 y a1 = 75 o a2 = 630360016. Teorema 1. Se verifica que: 1. se han investigado otras alternativas para el valor de m. El periodo máximo de un generador congruencial multiplicativo con m = 2k > 16 es 2k_2. Por ejemplo. se ha demostrado que tiene propiedades estadísticas bastante malas. el mayor primo menor que 231 es 231 — 1. que consiste en tomar como m el mayor primo menor que 2 k. si k = 31.10. entonces m es primo Si m es primo. el periodo máximo posible será una cuarta parte del módulo.11. conocido como RANDU. La más satisfactoria es la propuesta de Hutchinson en 1966. Sin embargo. tomaba m = 231 y a = 216 + 3. Si t = m — 1. A este respecto se tiene el siguiente resultado.

publicado en 1202. L y M. Se cruzan las parejas A y B Fin del mes 4 Las parejas A y B dan a luz a D y E. se puede saber la cantidad de parejas totales que hay hasta ese mes. La pareja C cumple 1 mes. D y E. D y E dan a luz a I. Fin del mes 5 A. G y H cumplen un mes. Se cruza la pareja A. y en el segundo mes los nacidos parir también". Fin del mes 3 La pareja A da a luz a la pareja C. B. Nota: al contar la cantidad de letras distintas en cada mes. De esta manera Fibonacci presentó la sucesión en su libro Liber Abaci. C. Fin del mes 6 A. D y E cumplen un mes. Muchas propiedades de la sucesión de Fibonacci fueron descubiertas por Édouard Lucas. La pareja B cumple 1 mes.[1] Número de Mes Explicación de la genealogía Comienzo del mes 1 Nace una pareja de conejos (pareja A). C. responsable de . K. B y C dan a luz a F. Fin del mes 2 La pareja A da a luz a la pareja B. J.Técnicas para generar números aleatorios MÉTODO FIBONACCI EXTENDIDOS Historia La sucesión fue descrita por Fibonacci como la solución a un problema de la cría de conejos: " Cierto hombre tenía una pareja de conejos juntos en un lugar cerrado y uno desea saber cuántos son creados a partir de este par en un año cuando es su naturaleza parir otro par en un simple mes. B. D. Se cruzan A. Fin del mes 1 La pareja A tiene un mes de edad. G y H. Se cruzan A. C. F. B. Se cruzan las parejas A. Se vuelve a cruzar la pareja A.

y el matemático escocés Robert Simson descubrió en 1753 que la relación entre dos números de Fibonacci sucesivos se acerca a la relaciónáurea fi ( ) cuanto más se acerque a infinito.Técnicas para generar números aleatorios haberla denominado como se la conoce en la actualidad.1) y X una variable aleatoria continua con función de distribución una distribución F . Esta sucesión ha tenido popularidad en el siglo XX especialmente en el ámbito musical.[2] También Kepler describió los números de Fibonacci. Olivier Messiaen. Entonces . Los generadores de Fibonacci se basan en una recurrencia del tipo Donde r s son enteros dados y TRANSFORMACIÓN INVERSA denota alguna de las operaciones La técnica de la transformación inversa es probablemente la más fácil de entender y la más comúnmente utilizada. si F es invertible entonces la variable aleatoria X = F _1(U) tiene Demostración Sea F X denota la función de distribución de X = F _1(U). F . es más: el cociente de dos términos sucesivos de toda sucesión recurrente de orden dos tiende al mismo límite. este método consiste en utilizar la función de distribución acumulada F . en el que compositores con tanto renombre como Béla Bartók. La fomentación teórica en la que se basan es diferente a la de los generadores congruenciales lineales. y se basa en el siguiente Teorema Teorema Sea U una variable aleatoria uniforme en (0. la banda Tool y Delia Derbyshire la han utilizado para la creación de acordes y de nuevas estructuras de frases musicale Las grandes ventajas de estos generadores son su rapidez y que tienen un periodo muy largo.

se está generando una muestra de la variable aleatoria X. entonces se propone el siguiente algoritmo para esta técnica: a) b) Generar n valores u i ~ U (0. sea ésta F. y por otro lado. y posteriormente evaluando la distribución inversa en este valor. Por lo tanto Sea X una variable aleatoria con soporte (a.l (u i ) Es decir. Denótese a la función de distribución acumulada F (x). entonces utilizando el resultado del teorema anterior. y considerando el hecho de que F (x) es monótona creciente en el soporte de la variable aleatoria en donde no es constante.Técnicas para generar números aleatorios Ahora como F es una función de distribución invertible. Tomando una muestra distribuida uniformemente a lo largo del eje y entre 0 y 1. se tiene que creciente de x. así la desigualdad a < F (x) es una función monótona no- b es equivalente a la desigualdad F (a) < F (b). Puede notarse que en donde la función de distribución acumulativa F(x) tiene una pendiente relativamente mayor.1) Regresar x ¡ = F.b) y función de densidad muestra aleatoria de tamaño f (x). se desea generar una n de esta distribución. . tiene una pendiente relativamente menor (crece más despacio). dará como resultado una densidad menor de puntos a lo largo del eje x (con un m enor valor de función de densidad f (x)). entonces en este intervalo la función de distribución tiene inversa. donde F(x).1. dará como resultado una alta densidad de puntos en el eje x (dando un mayor valor de f (x)).

luego si U ~U(0. En este caso. se tiene que F(x) = 1 . Realizando el programa en el Proyecto R.1) y U F(x) entonces se encuentra que x = b[-ln(1-u)]1/c . . resulta después de Generar 50.000 números aleatorios.Técnicas para generar números aleatorios EJEMPLO 1 Esta técnica puede ser ilustrada con la distribución Weibull.

Técnicas para generar números aleatorios En las gráficas de la figura 1. EJEMPLO 2 Si X es una variable aleatoria exponencial con parámetro 1. requiere que el decisor sea capaz de encontrar la inversa de la función de distribución F(x). pero tiene un inconveniente muy fuerte.1ª) muestran en el primer cuadro los números aleatorios sin agrupación. en el segundo se presenta el histograma de dichos puntos en esta se observa que siguen un patrón parecida a la densidad Weibull. generando Una variable aleatoria U. estableciendo. . entonces la función de distribución está dada por. eficiente para obtener la función de densidad de probabilidades. F(x) 1ex Denotando x = F. se puede generar una exponencial con parámetro 1. x = log(1u) Por lo tanto.1b) se muestran las dos densidades. como esto no siempre es posible. de los puntos generados con la técnica y la densidad teórica (línea punteada) en donde se observa que son muy similares de esta forma se puede asegurar que la técnica funciona. se tiene F(x) 1e -x ó F(x)=1e-x Tomando logaritmos. La transformación inversa es una técnica simple.1 (u ). es necesario considerar otras técnicas. además entre mayor sea el número de valores aleatorios mejor es la aproximación. en la segunda imagen figura1.

1) y por lo tanto log(1u) tiene la misma distribución como . note que si X es exponencial con media 1. Esto es. .000 números aleatorios con una distribución exponencial con parámetro 1.x F 1(U) log(1u)  Técnicas para generar números aleatorios Se puede obtener por notación que 1U es también uniforme sobre (0. cX es una exponencial con media c . el logaritmo negativo de un número aleatorio distribuido exponencialmente con parámetro 1. entonces para alguna constante positiva c . Además. Por lo tanto una variable aleatoria exponencial X con parámetro λ (media 1/λ) puede ser generada por número aleatorio U y estableciendo X=- A continuación se muestran las gráficas hechas en el Proyecto estadístico R para generar 50.log(U).

Supongamos que a = 5. Entonces los resultados son: . Para entrar en acción vamos a darle valores arbitrarios a cada uno de estos parámetros y estudiar que reacción tienen en la relación de recurrencia. X0 y c tienen que ser mayores que cero y la variable m debe ser mayor que las tres anteriores. En este documento estudiaremos los tres métodos congruenciales lineales más populares: Congruencial Mixto La fórmula (o relación de recurrencia) es sencilla: X a X c m n n ( )mod 1 = × + + Donde: · X0 es la semilla · a el multiplicador · c la constante aditiva y · m el módulo A tener en cuenta: Los valores a. De hecho. Para tal propósito tenemos que generar números a través de reglas determinísticas. por lo que es más preciso llamarles números pseudoaleatorios. El objetivo de un LCG es generar un valor aleatorio a partir de otro anterior. X0 = 7 y m = 8.Técnicas para generar números aleatorios Generar Números Aleatorios con Métodos Congruenciales En los experimentos de simulación es necesario el uso de números aleatorios que representen una distribución de probabilidad uniforme. c = 7. podemos decir que “una sucesión cumple la facultad de aleatoria si satisface las pruebas estadísticas de aleatoriedad” Métodos Congruenciales Los generadores de números aleatorios que más se usan son los generadores congruenciales lineales (LCG) ideados por Lehmer.

n. % n es el numero de datos a generar y % s es la semilla o valor de inicio. por lo que los residuos obtenidos con la función mod se deben dividir entre m-1. s) i=1. for I=1:n u=a*s+c. end % m es el modulo que se obtiene m = 2^g > n. c. % Genera un conjunto de numeros pseudo aleatorios por el metodo congruencial lineal a partir de: % Sintaxis: genelin(a. donde: % a es el factor de multiplicacion igual 1 + 4k. . Ahora lo resultados son: Para que lo anterior quede mas claro. a continuación se muestra un programa en Matlab que genera números aleatorios implementando el generador congruencial lineal mixto. Veamos un caso donde el periodo es menor a m. s). % c es el factor aditivo y es primo relativo a m. Decimos entonces que el periodo del generador es 8… igualito al valor del módulo… Eso no siempre es así. que se sugiere sea impar. r] = genelin(a. % g y k son numeros enteros. while n > 2^i. function [x. n. El valor de los parámetros es a = c = X0 = 4 y m = 6. c. m=2^i.Técnicas para generar números aleatorios Nótese que después de 8 pasadas el valor inicial de X se repite. i = i + 1. Cabe hacer la aclaración que los números deben estar entre 0 y 1.

end Técnicas para generar números aleatorios .m). r(I)=x(I)/(m-1). format long. r. s=x(I).x(I)=mod(u.

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->