Está en la página 1de 9

Sistemas Aleatorios: Generacin de Nmeros o u Seudo-Aleatorios MCL

Computacin / Matemticas o a

MA2006

Computacin / Matemticas o a

Sistemas Aleatorios: Generacin de Nmeros Seudo-Aleatorios o u

Generacion de Numeros Seudo-Aleatorios Un elemento importante en simulacin es tener rutinas que generen o variables aleatorias con distribuciones especicas: uniforme, normal, etc. Para ello la base es generar una secuencia de nmeros u aleatorios distribuidos uniformemente entre 0 y 1. Y para ello la clave es generar nmeros enteros aleatorios y uniformemente u distribuidos en un cierto intervalo de una manera eciente.

Computacin / Matemticas o a

Sistemas Aleatorios: Generacin de Nmeros Seudo-Aleatorios o u

Metodo de la Congruencia Lineal Hasta ahora los mtodos ms populares para generar nmeros e a u aleatorios son casos particulares del esquema introducido por D H Lehner en 1949 y que aparece publicado en 1951: Se escogen cuatro nmeros mgicos: u a m: el mdulo (m > 0) o a: el multiplicador (0 a < m) c: el corrimiento (0 c < m) x0 : la semilla (0 x0 < m) La sucesin de nmeros seudo-aleatorios < xn > se obtiene o u aplicando la frmula: o xn+1 = ((a xn + c) mod m)
Recuerde que k mod m es el residuo de de hacer la divisin de k entre m. o

Computacin / Matemticas o a

Sistemas Aleatorios: Generacin de Nmeros Seudo-Aleatorios o u

Ejemplo Tome m = 16, a = 5, c = 1 y x0 = 5:


n 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 xn 5 10 3 0 1 6 15 12 13 2 11 8 9 14 7 4 5 10 3 Clculos a (5 5 + 1) mod 16 = 26 mod 16 = 1 16 + 10 (5 10 + 1) mod16 = 51 mod 16 = 3 16 + 3 (5 3 + 1) mod 16 = 16 mod 16 = 1 16 + 0 (5 0 + 1) mod 16 = 1 mod 16 = 0 16 + 1 (5 1 + 1) mod 16 = 6 mod 16 = 0 16 + 6 (5 6 + 1) mod 16 = 31 mod 16 = 1 16 + 15 (5 15 + 1) mod 16 = 76 mod 16 = 6 16 + 12 (5 12 + 1) mod 16 = 61 mod 16 = 3 16 + 13 (5 13 + 1) mod 16 = 66 mod 16 = 4 16 + 2 (5 2 + 1) mod 16 = 11 mod 16 = 0 16 + 11 (5 11 + 1) mod 16 = 56 mod 16 = 3 16 + 8 (5 8 + 1) mod 16 = 41 mod 16 = 2 16 + 9 (5 9 + 1) mod 16 = 46 mod 16 = 2 16 + 14 (5 14 + 1) mod 16 = 71 mod 16 = 4 16 + 7 (5 7 + 1) mod 16 = 36 mod 16 = 2 16 + 4 (5 4 + 1) mod 16 = 21 mod 16 = 1 16 + 5 (5 5 + 1) mod 16 = 26 mod 16 = 1 16 + 10 (5 10 + 1) mod16 = 51 mod 16 = 3 16 + 3

Computacin / Matemticas o a

Sistemas Aleatorios: Generacin de Nmeros Seudo-Aleatorios o u

Conceptos

Computacin / Matemticas o a

Sistemas Aleatorios: Generacin de Nmeros Seudo-Aleatorios o u

Ejemplo Para m = 15, a = 12 y c = 0 la grca de cmo cambia la semilla a o por el siguiente aleatorio y de all a los subsiguientes queda:
2 4 5

10

14

11

12

13

Note que para x0 = 1: el per odo es 5, la longitud es del ciclo 4 y la longitud de la cola 1.
Computacin / Matemticas o a Sistemas Aleatorios: Generacin de Nmeros Seudo-Aleatorios o u

GCL Multiplicativos Tienen la forma: xn+1 = ((a xn ) mod m) Los hay con m potencia de 2 (m = 2k ) que son rpidos pues a el residuo en divisiones con potencia de 2 puede hacerse rpidamente. Aunque tienen la desventaja que no son de a per odo completo (Cuando tiene el mximo per a odo posible, m 1), pueden ser sucientes para muchas aplicaciones. Cuando m no es potencia de 2 el generador es menos rpido; a se acostumbra elegir un nmero m que sea primo y la relacin u o entre m y a debe ser especial para que el generador tenga un per odo completo o al menos grande.

Computacin / Matemticas o a

Sistemas Aleatorios: Generacin de Nmeros Seudo-Aleatorios o u

Algunos Generadores de Numeros Aleatorios xn = (75 xn1 ) mod(231 1): Usado por IMSL (1987), PRIMOS (1984) xn = (16, 807 xn1 ) mod 2311 : Usado por : SAS, Pascal de Sheeld. xn = (513 xn1 ) mod 235 : Usado por SIMULA en UNIVAC xn = 1, 103, 515, 245 xn1 + 12, 345) mod 232 : Usado en UNIX

Computacin / Matemticas o a

Sistemas Aleatorios: Generacin de Nmeros Seudo-Aleatorios o u

Recomendaciones en la seleccion de la semilla No use cero Evite valores pares Aprenda reusar semillas: podr repetir corridas a En general, no use semillas aleatorias

Computacin / Matemticas o a

Sistemas Aleatorios: Generacin de Nmeros Seudo-Aleatorios o u