Generadores de números aleatorios



Documentos relacionados
Variables Uniformes. Generadores de variables aleatorias uniformes. Propiedades buscadas. Para qué se utilizan?

Probabilidades y Estadística (Computación) Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires Ana M. Bianco y Elena J.

Generación de números aleatorios

Generadores de números aleatorios

R-IV. Números Aleatorios. Método de Monte- Carlo. Números Aleatorios. Números Aleatorios 8 -

RELACIONES DE RECURRENCIA

Generadores de números pseudoaleatorios

ICM Fundamentos de Computación

EJERCICIOS RESUELTOS SOBRE ERRORES DE REDONDEO

Representación de la Información

Un problema sobre repetidas apuestas al azar

!!!!!!!! !!!!! Práctica!4.! Programación!básica!en!C.! ! Grado!en!Ingeniería!!en!Electrónica!y!Automática!Industrial! ! Curso!2015H2016!

21/02/2012. Agenda. Unidad Central de Procesamiento (CPU)

Actividades de Divulgación del Centro Atómico Bariloche. Qué hay detrás de un programa de computadora? Daniela Arnica Pablo E. Argañaras.

ETS Caminos Santander. Curso Ejercicios de introducción a la programación.

INFORMÁTICA. Práctica 5. Programación en C. Grado en Ingeniería en Electrónica y Automática Industrial. Curso v1.0 (05.03.

Capítulo 12: Indexación y asociación

TEMA 1 Representación de la información

2. Aritmética modular Ejercicios resueltos

Simulación Computacional. Tema 1: Generación de números aleatorios

Apuntes de Matemática Discreta 1. Conjuntos y Subconjuntos

NÚMEROS NATURALES Y NÚMEROS ENTEROS

Operaciones Booleanas y Compuertas Básicas

Capítulo 2. Generación de Números Aleatorios. Introducción. Efectos de la aleatoriedad en la simulación

PROBABILIDADES Y ESTADÍSTICA (C) Práctica 2

❷ Aritmética Binaria Entera

PROBABILIDADES Y ESTADÍSTICA (C) Práctica 2

Tema 1: Test de Distribuciones de Probabilidad

Tema 2. Espacios Vectoriales Introducción

Simulación, Método de Montecarlo

SISTEMAS NUMERICOS CAMILO ANDREY NEIRA IBAÑEZ UNINSANGIL INTRODUCTORIO A LA INGENIERIA LOGICA Y PROGRAMACION

1. Producto escalar, métrica y norma asociada

Programación Genética

OR (+) AND( ). AND AND

PRÁCTICA N 2 SISTEMAS DE NUMERACIÓN

Lenguajes y Compiladores

Estructuras de Datos y Algoritmos

Generación de Números Pseudo-Aleatorios

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

Tema 3. Secuencias y transformada z

Tema 6. Reutilización de código. Programación Programación - Tema 6: Reutilización de código

Métodos generales de generación de variables aleatorias

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

La suma se realiza miembro a miembro. La suma de polinomios goza de las mismas propiedades que la suma de números. Ejemplo:

SIMULACIÓN. Orientaciones para la solución del examen de Febrero 2011, Segunda Semana

La nueva criba de Eratóstenes Efraín Soto Apolinar 1 F.I.M.E. U.A.N.L. San Nicolás, N.L. México. efrain@yalma.fime.uanl.mx

Capítulo 4 Procesos con estructuras de repetición

Apuntes de Microcontroladores (Repaso de temas previos)

CI 2125, Computación I

Unidad II: Números pseudoaleatorios

ETSIINGENIO 2009 DIBUJO DE GRAFOS MEDIANTE ALGORITMOS GENÉTICOS

x

Sistemas de Computadoras Índice

LÍMITES Y CONTINUIDAD DE FUNCIONES

Tema: FUNCIONES, PROCEDIMIENTOS Y RECURSIVIDAD.

Nota 2. Luis Sierra. Marzo del 2010

AMPLIACIÓN DE MATEMÁTICAS. REPASO DE MATEMÁTICAS DISCRETA. CONGRUENCIAS. En el conjunto de los números enteros

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática

ESTADÍSTICA 2OO7/2OO8 TEMA 10: SIMULACIÓN DE VARIABLES ALEATORIAS

TEMA 3. EL PROCESO DE COMPILACIÓN, DEL CÓDIGO FUENTE AL CÓDIGO MÁQUINA

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009

Vectores en el espacio

Estadística Computacional

CAPITULO 4 JUSTIFICACION DEL ESTUDIO. En este capítulo se presenta la justificación del estudio, supuestos y limitaciones de

TEMA 2: Representación de la Información en las computadoras

La Computadora. Operaciones de entrada al ser receptora de información. Operaciones de cálculo, lógica y almacenamiento.

Números Reales. MathCon c

Datos del autor. Nombres y apellido: Germán Andrés Paz. Lugar de nacimiento: Rosario (Código Postal 2000), Santa Fe, Argentina

parte del tiempo de procesamiento en realizar este tipo de Es importante por que una computadora consume gran

Representación de números en binario

Materia: Informática. Nota de Clases Sistemas de Numeración

Tema 3. Medidas de tendencia central Introducción. Contenido

Biblioteca Virtual Ejercicios Resueltos

by Tim Tran:

Clase 25 de agosto. - Son los conjuntos de estados (válidos o no) para las condiciones de entrada.

VECTORES. Módulo, dirección y sentido de un vector fijo En un vector fijo se llama módulo del mismo a la longitud del segmento que lo define.


Trabajo Práctico Nº 1 SISTEMAS DE NUMERACION

Sistema binario. Representación

3.1 DEFINICIÓN. Figura Nº 1. Vector

PROGRAMACIÓN LINEAL Introducción Inecuaciones lineales con 2 variables

DEFINICION. Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

El método de Monte Carlo: generalidades. Simulación de Distribuciones de Poisson. Simulación de Distribuciones Generales

Sistemas de Numeración Operaciones - Códigos

Simulación Monte Carlo

Árboles. Cursos Propedéuticos Dr. René Cumplido M. en C. Luis Rodríguez Flores

Introducción a la Programación 11 O. Humberto Cervantes Maceda

Medidas de tendencia Central

Sistemas de numeración

Representación de Datos. Una Introducción a los Sistemas Numéricos

UNIDAD Nº 1: 1. SISTEMAS DE NUMERACION. Formalizado este concepto, se dirá que un número X viene representado por una cadena de dígitos:

Contenidos Didácticos

1. Ecuaciones no lineales

Integración por el método de Monte Carlo

DESARROLLO DE HABILIDADES DEL PENSAMIENTO LÓGICO

x : N Q 1 x(1) = x 1 2 x(2) = x 2 3 x(3) = x 3

Los sistemas de numeración se clasifican en: posicionales y no posicionales.

1º) Siempre que se pueda, hay que sacar factor común: :a b ± a c ± a d ± = a (b ± c ± d ± ):

Matemáticas para la Computación

Transcripción:

Generadores de números aleatorios Patricia Kisbye FaMAF 23 de marzo, 2010

Para qué se utilizan? Simulación. Muestreo. Análisis numérico. Testeo de programas. Juegos de azar. Toma de decisiones.

Secuencias de números aleatorios En simulación las secuencias con distribución uniforme en [0, 1] se utilizan: en forma directa, para generar distribuciones discretas y continuas, para generar valores de variables aleatorias dependientes.

Un poco de historia Antes de las computadoras, existieron diferentes métodos para generar secuencias de números aleatorios: Procedimientos físicos (monedas, dados, bolilleros,... ). (1927) Tipett: tabla de 40000 dígitos aleatorios (no resultaron con distribución uniforme). (1939) Kendall y Babbington: dispositivo mecánico. Tabla de 100.000 números aleatorios. (1955) Rand Corporation: ruido electrónico. Tabla de 1 millón de números aleatorios.

Inconvenientes de métodos físicos 1. No puede repetirse una misma secuencia. 2. No hay velocidad computacional. 3. Incorporar una tabla a la computadora implica gran costo de almacenamiento en relación a la cantidad de números. Con la aparición de las computadoras, surgen métodos de generación de secuencias de números aleatorios.

Propiedades deseables de un generador Aleatorio: Distribución uniforme Un generador de números aleatorios razonable debe cumplir: 1. repetibilidad Al repetir los parámetros del generador, se repite la secuencia. 2. portabilidad, La secuencia no debe depender del lenguaje computacional ni de la computadora utilizada. 3. velocidad computacional. Puede ser conveniente utilizar lenguajes de bajo o medio nivel.

Principios generales de un buen generador La secuencia generada debe ser intuitivamente aleatoria. Esa aleatoriedad debe ser establecida teóricamente o, al menos, debe pasar ciertos tests de aleatoriedad. Debe conocerse algo sobre las propiedades teóricas del generador.

Un ejemplo Secuencia de von Neumann (1946): 1. X 0 : número de 5 dígitos. (03001) 2. X 2 i : escrito con diez dígitos. (0009006001) 3. X i+1 : 5 dígitos centrales. (09006) 4. Volver a 2 3001, 9006, 81108, 78507, 63349, 13095, 71479, 92474, 51440 21000, 41000, 81000, 61000, 21000... con 4 dígitos: 3792, 3792, 3792, 3792,...

Desventajas del Gen. de von Neuman 1. No se conocen propiedades teóricas del generador: (semilla conveniente, número de dígitos en cada término). 2. Forsythe: (con 4 dígitos) De 16 semillas, 12 degeneraban en 6100, 2100, 4100, 6100,... y 4 degeneraban en 0. 3. Metropolis: Secuencias de 20 bits degeneran en uno de 13 ciclos, con longitud máxima 142. 4. En algunos casos el primer tramo es satisfactoriamente aleatorio y luego degenera.

Generador congruencial lineal y i = ay i 1 + c mod M, 1 i, y 0 : semilla a: multiplicador c: incremento M: módulo x i = y i, secuencia en el [0, 1). M generador mixto: c 0 generador multiplicativo: c = 0.

Ejemplo Cuál es el siguiente número en la secuencia, entre 0 y 15? 0, 1, 6, 15, 12, 13, 2, 11, 8, 9, 14,.. y i = 5y i 1 + 1 mod 16, y 0 = 0. Secuencia intuitivamente no aleatoria: 1, 12, 1, 12, 1, 12, 1, 12...

Propiedades El menor número K tal que y n+k = y n es el período de la secuencia. Todo generador congruencial genera secuencias de período finito. El período de una secuencia está acotado por M. Repetibilidad. Portabilidad?

Elección de a, c y M Las buenas propiedades dependen de una elección apropiada de a, c y M, y en algunos casos y 0. La elección de M se relaciona con: longitud de la secuencia y velocidad computacional. La elección de a y c, en función de M, se relacionan con la aleatoriedad.

Generadores mixtos y i+1 = a y i + c mod M, c 0 tiene período M si y sólo si 1. m.c.d.(c, M) = 1 2. a 1 mod p, para cualquier factor primo p de M. 3. Si 4 M, entonces a 1 mod 4. Corolario: Si M es primo, el período máximo ocurre sólo si a = 1.

Generadores multiplicativos a es raíz primitiva de M si a (M 1)/p 1 mod (M) para cualquier factor primo p de M 1. Ejemplo: M = 7. a = 2 a = 3 2 1 2 mod 7 3 1 3 mod 7 2 2 4 mod 7 3 2 2 mod 7 2 3 1 mod 7 3 3 6 mod 7 2 4 2 mod 7 3 4 4 mod 7 2 5 4 mod 7 3 5 5 mod 7 2 6 1 mod 7 3 6 1 mod 7 2 7 2 mod 7 3 7 3 mod 7

Generadores multiplicativos Para un generador multiplicativo y i+1 = a y i longitud K de la secuencia verifica 1. Si K = M 1 entonces M es primo. 2. K divide a M 1. mod M, la 3. K = M 1 si y sólo si a es raíz primitiva de M. Problema: Encontrar raíces primitivas. Propiedad útil: Si a es raíz primitiva y (k, M 1) = 1, entonces a k es raíz primitiva.

Un ejemplo con M primo M = 2 31 1 a = 16807 M 1 = 2 31 2 = 2 3 2 7 11 31 151 331, M: es un primo de Mersenne. 7: raíz primitiva, (5, M 1) = 1, implica que 7 5 = 16807 es raíz primitiva. secuencia de longitud máxima M 1 = 2 147 483 646.

Módulo potencia de 2 Si M = 2 k, c = 0, tomar módulo es computacionalmente sencillo. y j = a j y 0 mod (2 k ) secuencia de longitud máxima = 2 k 2, para a raíz primitiva. facilita cálculos (desplazamiento de bits). fenómeno de no aleatoriedad en bits menos significativos. RANDU: M = 2 31, a = 2 16 + 3 = 65539.

Desventaja de un generador congruencial En una secuencia y 1, y 2,... dada por un generador congruencial cualquiera, los puntos (y j, y j+1,..., y j+k 1 ), j = 0, 1, 2,... están ubicados en no más de (k!m) 1/k hiperplanos paralelos. Cota máxima: (k!m) 1/k : Estructura de red Generador RANDU: Ternas ubicadas en 15 planos paralelos.

Generadores congruenciales, m=256

Generadores congruenciales

RANDU

Generadores portables a = 7 5 = 16807 M = 2 31 1 = 2147483647 "Buen generador". Las multiplicaciones superan el rango de 32 bits. Algoritmo de Schrage.

Algoritmo de Schrage M = aq + r q = [M/a], r = M mod a Si r < q y 0 < z < M 1 se puede probar que para todo z, 0 < z < M: 0 a(z mod q) M 1 0 r[z/q] M 1 az mod M = { a(z mod q) r[z/q] si es 0 a(z mod q) r[z/q] + M c.c.

El generador ran0 y j+1 = ay j mod M a = 7 5 = 16807, M = 2 31 1 = 2147483647 Schrage: se utiliza q = 127773 y r = 2836 Desventajas: Sucesiones de números muy pequeños. Inconvenientes en el plano: (y i, y i+1 ): el test χ 2 falla para N O(10 7 ) M 2

Shuffling Se almacenan los últimos valores generados en una tabla, y la salida se obtiene eligiendo aleatoriamente un elemento de dicha tabla y reponiéndolo por un nuevo valor generado. El generador ran1. a = 7 5 = 16807, M = 2 31 1 = 2147483647 Tabla de 32 posiciones.

El generador ran1 y 1 v0 RAN 3 2 SALIDA v31

Combinación de generadores Teorema Sean W 1, W 2,..., W n variables aleatorias discretas, tales que W 1 U([0, d 1]). Entonces n W = ( W j ) j=1 mod d es una v.a. uniforme discreta en [0, d 1]. Ejemplo: tirar 2 dados, y sumar módulo 6.

Combinación de congruenciales Combinar secuencias de generadores congruenciales. Sugerencia: restar. Se obtiene un generador de v.a. uniformes. La longitud de la secuencia es mayor = mínimo común múltiplo de los generadores. x n = 40014x n 1 mod 2 31 85 y n = 40692y n 1 mod 2 31 249 El 2 es el único factor común. Período 2.3 10 18

Combinación de congruenciales

El generador ran2 Utiliza 2 generadores congruenciales de enteros de 32 bits. Tabla de 32 posiciones: shuffling. Salida = combinación de x e y. G 1 x n = 40014x n 1 mod 2 31 85 G 2 y n = 40692y n 1 mod 2 31 249

ran2 1 G2 y G1 4 2 v0 vj 3 SALIDA=vj y v31

El generador ran3 Ver en Knuth, Seminumerical Algorithms, sección 3.2.1. Se construye inicialmente una tabla de 55 posiciones, con números aleatorios. i y j recorren cíclicamente la tabla, separados por 24 posiciones. Salida: diferencia entre los elementos i y j, que reemplaza a su vez el lugar i. El ciclo que se obtiene es de longitud 2 32.

ran3 j i j >j 1 i >i 1 1 vi vj 2 3 j i= 24 (55) SALIDA=vi vj

Marsaglia - Zaman Some portable very-long-period random number generators, George Marsaglia and Arif Zaman. Sugerencias sobre otros generadores. Fibonacci Resta con préstamo Suma con acarreo El generador mzran2

Consideraciones sobre ran2 La combinación de generadores produce mejoras. Sin embargo, conviene combinar estructuras diferentes. Utilizar módulo 32 bits en lugar de 31 bits. Utilizar primos seguros (safeprimes), con a = 2 k + α. 2 31 69 2 31 535 2 32 1409, 2 32 209

Consideraciones sobre ran2 Por qué no un rango de enteros? La subrutina iran2( ). UNI( )=.5+.232830E-9*iran2() VNI( )=.4656613E-9*iran2()

Algunos ejemplos Módulo Secuencia Período 2 32 x n = 69069 x n 1 + impar 2 32 2 32 x n = x n 1 x n 2 2 31 2 32 x n = x n 1 + x n 2 + C 2 58 2 31 69 x n = x n 3 x n 1 2 62 2 32 18 x n = x n 2 x n 3 C 2 95

El generador mzran( ) Combina los generadores: Período: 2 32 x n = 69069x n 1 + 1013904243 mod 2 32 x n = x n 3 x n 1 mod 2 31 69 Período: 2 94 El período es mayor a 2 94, o 10 28.

El generador mzran13( ) Combina los generadores: Período: 2 32 x n = 69069x n 1 + 1013904243 mod 2 32 x n = x n 2 x n 3 c mod 2 32 18 Período: 2 95 El período es del orden de 2 125, o 10 36.

Rutina propuesta typedef unsigned long int unlong; unlong x=521288629, y=362436069, z=16163801, c=1, n=1131199209; unlong mzran13() { long int s; if (y>x+c) (s=y-(x+c); c=0;} else { s=y-(x+c)-18; c=1; } x=y; y=z; return (z=s) + (n=69069*n+1013904243); }; void ran13set(unlong xx, unlong yy, unlong zz, { x=xx; y=yy; z=zz; n=nn; c=y>z; }