numeros pseudoaleatorios

8

Click here to load reader

Upload: david-ramon-fernandez-sanz

Post on 08-Aug-2015

22 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Numeros Pseudoaleatorios

“Generación de Números Simulación Pseudoaleatorios”

Historia:

La generación de números tiene múltiples usos principalmente en estadística, simulaciones y criptografía. Al principio los investigadores que necesitaban secuencias de números aleatorios tenían que generarlos ellos mismos mediante dados, monedas, cartas, etc. o utilizar tablas de números aleatorios existentes.

El primer intento de dotar a los investigadores con un suministro de dígitos aleatorios tuvo lugar en 1927, cuando el Cambridge University Press publicó una tabla de 41.600 dígitos desarrollada por Leonard H.C. Tippet. En 1947 la RAND Corporation generó una secuencia de números a partir de una simulación electrónica de una rueda de ruleta; los resultados fueron publicados en 1955bajo el título A Million Random Digits with 100.000 Normal Deviates.

John von Neumann fue un pionero en la investigación de los generadores de números aleatorios implementados en computadoras. En 1951, Derrick Henry Lehmer inventó el generador congruencial lineal, utilizado en un gran número de generadores pseudoaleatorios actuales. Con la proliferación de los ordenadores, los algoritmos de generación de números pseudoaleatorios fueron reemplazando las tablas de números aleatorios, y los generadores de números aleatorios "reales" (generadores de números aleatorios por hardware) son utilizados en muy raras ocasiones.

Números Pseudoaleatorios:Se llaman números pseudoaleatorios a una sucesión determinística de números en el intervalo [0,1] que tiene las mismas propiedades estadísticas que una sucesión de números aleatorios. Una forma general de obtener números pseudoaleatorios es partir de una semilla de n números y aplicar una función f.

Los números pseudoaleatorios son necesarios cuando se pone en práctica un modelo de simulación, para obtener observaciones aleatorias a partir de distribuciones de probabilidad.

Los números aleatorios generados en un inicio por una computadora casi siempre son números aleatorios enteros.

En sentido estricto, los números generados por una computadora no se deben llamar números aleatorios porque son predecibles y se pueden

Page 2: Numeros Pseudoaleatorios

reproducir, dado el número aleatorio generador que se use. Por ello, en ocasiones se les llama números pseudoaleatorios.

No obstante, el punto importante es que, en forma satisfactoria, los números aleatorios son muy útiles en la simulación si el método utilizado para generarlo es válido.

El procedimiento usado por una computadora para generar números aleatorios se llama generador de números aleatorios.

Un generador de números aleatorios es un algoritmo que produce secuencias de números que siguen una distribución de probabilidad específica y tienen la apariencia de aleatoriedad.

La referencia a secuencias de números aleatorios significa que el algoritmo produce muchos números aleatorios en serie.

La secuencia de números generados debe cumplir con las dos hipótesis siguientes:

1. Distribución Uniforme.2. Independencia, es decir, no correlacionados.

Además son importantes los siguientes aspectos:

a) Las subsecuencias también deben cumplir las dos hipótesis antes mencionadas.

b) Deben ser secuencias largas y sin hueco, es decir, densas.c) Algoritmos rápidos y que no ocupen mucha memoria.

Los números aleatorios se pueden dividir en dos categorías principales:

1. Números aleatorios enteros. Es una observación aleatoria de una distribución uniforme discreta en el intervalo n, n+1… Por lo general, n=0 o n=1 donde estos son valores convenientes para la mayoría de las aplicaciones.

2. Números aleatorios uniformes. Es una observación aleatoria a partir de una distribución uniforme (continua) en un intervalo [a,b].

Propiedades mínimas que deberán satisfacer los números pseudoaleatoriosLos números pseudoaleatorios y el método utilizado para generarlos deberán satisfacer las siguientes propiedades o condiciones:

Uniformemente distribuidos

Pág. 2

Page 3: Numeros Pseudoaleatorios

Estadísticamente independientes Reproducibles (la misma semilla debe dar la misma sucesión) Sin repetición dentro de una longitud determinada de la sucesión Generación a grandes velocidades Requerir el mínimo de capacidad de almacenamiento

Métodos de Generación de Números PseudoaleatoriosSe cuenta con varios métodos generadores de números pseudoaleatorios, de los cuales, se pueden mencionar:

Método de los cuadrados medios - Midsquare Method: Este método se debe fue propuesto en los años 40 por los matemáticos John von Neumann y Nicholas Metropolis. El método comienza tomando un número al azar, x0, de 2n cifras (originalmente los autores proponían 4 cifras) que al elevarlo al cuadrado resulta un número de hasta 4n cifras. Si es necesario se añaden ceros a la izquierda para que el número resultante tenga exactamente 4n cifras. Sea x1 el número

resultante de seleccionar las 2n cifras centrales de x02; el primer

número aleatorio u1 se obtiene poniendo un punto decimal delante las 2n cifras de x1. A continuación x2 y u2 se generan a partir de x1 del mismo modo. Así sucesivamente.Este método tiene dos inconvenientes principales:

Tiene una fuerte tendencia a degenerar a cero rápidamente (probar por ejemplo con x0 = 1009)

Los números generados pueden repetirse cíclicamente después de una secuencia corta.

Ejemplo:

Pág. 3

Page 4: Numeros Pseudoaleatorios

Algoritmo de productos medios: La mecánica de generación de números pseudoaleatorios de este algoritmo no congruencial es similar a la del algoritmo de cuadrados medios. La diferencia entre ambos radica en que el algoritmo de productos medios requiere dos semillas, ambas con D dígitos; además, en lugar de elevarlas al cuadrado, las semillas se multiplican y del producto se seleccionan los D dígitos del centro, los cuales formarán el primer número pseudoaleatorios r i = 0.D. Después se elimina una semilla y la otra se multiplica por el primer número de D dígitos, para luego seleccionar del producto los D dígitos que conformarán un segundo número ri. Entonces se elimina la segunda semilla y se multiplican el primer número de D dígitos por el segundo número de D dígitos; del producto se obtiene el tercer número ri. Siempre se irá eliminando el número más antiguo, y el procedimiento se repetirá hasta generar los n números pseudoaleatorios. A continuación se presentan con más detalle los pasos del método para generar números con el algoritmo de productos medios.

1. Seleccionar una semilla (X0) con D dígitos. 2. Seleccionar una semilla (X1) con D dígitos.3. Sea Y0 = X0*X1; sea X2 = los D dígitos del centro y sea r1 = 0.D

dígitos del centro. 4. Sea Yi = Xi*Xi+1; sea Xi+2 = los D dígitos del centro y sea ri+1 =

0.D dígitos del centro para toda i = 1, 2, 3,..., n. 5. Repetir el paso 4 hasta obtener los n números ri deseados.

Método congruencial: que a su vez, se divide en tres, mixto, aditivo y multiplicativo.

El método congruencial mixto genera una sucesión de númerosaleatorios enteros en un intervalo de 0 a m-1. Éste método siempre calcula el siguiente número a partir del último que obtuvo, dado un número aleatorio inicial Xo, llamado semilla. En particular, calcula el (n+ 1)-

Pág. 4

Page 5: Numeros Pseudoaleatorios

ésimo número aleatorio Xn+1 a partir del n-ésimo número aleatorio Xn

con la relación de recurrencia. Donde a, c y m son enteros positivos (a < m, c < m).

Ésta notación matemática significa que Xn+1 son 0, 1,…, M-1, de manera que m representa el número deseado de valores diferentes que se puede generar como números aleatorios. A manera de ilustración, suponga que m=8, a=5, c=7 y Xo=4. En la siguiente tabla se calculó la sucesión de números aleatorios que se tuvo (esta sucesión no puede continuar, puesto que solo se repetirían los números en el mismo orden). Obsérvese que ésta sucesión incluye los ocho números posibles una sola vez. Ésta propiedad es necesaria para una sucesión de números aleatorios enteros, pero no ocurre con algunos valores de a y c.  

La cantidad de números consecutivos en una sucesión antes de que se repita se conoce como longitud de ciclo. En consecuencia, la longitud de ciclo en el ejemplo es 8. La longitud de ciclo máxima es m, de manera que sólo los valores de a y c considerados son los que conducen a una longitud de ciclo máxima.

En la siguiente tabla, se ilustra la conversión de números aleatorios en números aleatorios uniformes. La columna de la izquierda proporciona los números aleatorios enteros que se obtuvo en la última columna de la tabla anterior. La última columna proporciona los números aleatorios uniformes correspondientes a partir de la fórmula.

Pág. 5

Page 6: Numeros Pseudoaleatorios

Númeroaleatorio uniforme=Númeroaleatorio entero+ 1

2m

El método congruencial multiplicativo corresponde al caso especial del método congruencial mixto en el que c =0. El método congruencial aditivo también es parecido, pero establece a =1 y sustituye a c por algún número aleatorio anterior a Xn en la sucesión, por ejemplo, Xn-1(así requiere más de una semilla para iniciar el cálculo de la sucesión).

El método congruencial mixto proporciona una gran flexibilidad para elegir un generador de números aleatorios en particular (una combinación específica de a, c y m). Sin embargo, se requiere tenermucho cuidado al seleccionar el generador de números aleatoriosporque la mayoría de las combinaciones de valores a, c y m conducen a propiedades indeseables (por ejemplo, una longitud de ciclo menor a m).

Pág. 6