Sunteți pe pagina 1din 8

Generacin de nmeros aleatorios Documento facilitado por la realizacin de la asignatura Mtodos informticos de la fsica de segundo curso en la universidad autnoma

de Barcelona en el transcurso del ao 2003-2004. 1 Nmeros uniformemente distribuidos Un problema bsico que nos encontramos habitualmente es el de obtener secuencias de nmeros uniformemente distribuidos en un intervalo La diferentes posibilidades para resolver dicho problema son: i) Buscar en tablas de nmeros aleatorios publicadas (libros, internet ...); ii) Observar un proceso fsico tal como la desintegracin radiactiva, el ruido elctrico ...; iii) Los lenguajes de programacin y las hojas electrnicas incluyen una funcin para generarlos iv) Mediante algorismos de generac in de nmeros aleatorios Las principales ventajas de los generadores de nmeros aleatorios son: - Rapidez - Comodidad - Reproducibilidad - Portabilidad Y la desventaja fundamental: - Las secuencias obtenidas no son realmente aleatorias, ya que s e obtienen con operaciones deterministas. Solo podemos obtener secuencias pseudoaleatorias, que a su vez satisfacen algunos criterios de aleatoriedad adecuados. Los nmeros generados deben cumplir ciertas caractersticas para que sean vlidos. Dichas caractersticas son: 1. Uniformemente distribuidos. 2. Estadsticamente independientes. 3. Su media debe ser estadsticamente igual a 1/2. 4. Su varianza debe ser estadsticamente igual a 1/12. .

5. Su periodo o ciclo de vida debe ser largo. 6. Deben ser generados a travs de un mtodo rpido. 7. Generados a travs de un mtodo que no requiera mucha capacidad de almacenamiento de la computadora.

Normalmente se utilizan nmeros enteros, ya que su aritmtica es exacta y rpida. Se generan enteros en el intervarlo . entre 0 y ,y da valores reales

En general los algoritmos utilizan relaciones de recurrencia del tipo

en el caso de recurrencia simple, o bien

para el caso de una recurrencia de orden

. valores para

Se necesitar dar un valor inicial para comenzar el algoritmo ( recurrencias de orden ). 1.1 Generadores de congruencia lineal (GCL)

Estos generadores son los ms utilizados y los ms conocidos. Se basan en la relacin de recurrencia

donde - Hay

es el multiplicador y valores posibles de

el mdulo. , entre 0 i .

- La secuencia es periodica: cuando vuelve a aparecer un nmero por segunda vez, la secuencia se vuelve a repetir. El periodo depende de los valores de , y , as como del valor inicial; ntese que el mximo posible es . Recordemos que lo que nos interesa para trabajar con un buen generador de nmeros aleatorios es que la distribucin de los nmeros obtenidos tiene que ser uniforme, no deben de haber correl aciones entre los terminos de la

secuencia, el periodo debe ser lo ms largo posible, y el algorismo debe ser de ejecucin rpida. 1.1.1 Mejora de los generadores de congruencia lineal Las limitaciones ms importantes de los generadores son su periocidad (normalmente el periodo no suele ser ms grande de y la posible presencia de correlaciones entre trminos consecutivos de la secuencia. Una manera sencilla de suprimir stas limitaciones es desordenar un poco la secuencia mediante el siguiente procedimi ento: Se parte de un generador que da enteros aleatorios entre 0 y , y en primer lugar se genera con el GCL un vector que contiene una lista de enteros aleatorios , as como un entero aleatorio . . Se determina el ndice

, entre 0 y El elemento

de la lista se da como un nuevo nombre aleatorio, y se reasigna

a la variable el valor . El valor de se renueva con el GCL, y se vuelve a repetir los pasos desde la determinacin del ndice . 1.2 Generadores de desplazamiento de bits En estos generadores cada nuevo nmero entero aleatorio manipulando los bits del nmero anterior, , se obtiene

. En lenguaje C, esto se puede .

hacer facilmente utilizando operadores sobre bits, 1.3 Generadores de Fibonacci

Las grandes ventajas de estos generadores es qu e son generadores muy rpidos que tienen un periodo muy largo. La fomentacin teorica en la que se basan es diferente a la de los GCL. Los generadores de Fibonacci se basan en una recurrencia del tipo

donde

son enteros dados y

denota alguna de las operaciones

. Este tipo de generador precisa iniciar (con otro generador) y mantener una lista de los ltimos nmeros generados. Otros tipos de generadores los podemos encontrar en:

- W.H. Press, S.A. Teukolski, W.T. Vetterling i B.P. Flannery, Numerical Recipes in C, Cambridge University Press. -D.E. Knuth, The Art of computing programming, 2: Seminumerical Algorithms, Addison-Wesley.

Antes de aceptar un nuevo generador hace falta verificar que satisface una srie de pruebas, lo que llamaremos pruebas de aleatoriedad. 1.4 Pruebas de aleatoriedad stas consisten basicamente en realizar dos tipos de pruebas, empricas y teoricas. Si los generadores superan estas pruebas, podremos asegurar que estamos ante un generador de nmeros aleatorios bastante competente. Pruebas empricas (sobre la muestra de la secuencia) - Test de uniformidad: hace falta que los valores esten uniformemente distribuidos en . Se puede realizar un test . Alternativamente, podemos y comprobar que se .

estimar los momentos de orden aproximan a sus correspondientes valores teo ricos,

- Test serial: se generan parejas de valores distribuyen uniformemente en el cuadrado

, y se comprueba si se .

- Test de correlaciones: se determina la correlacin entre nmeros separados lugares en la secuencia, acercarse a 1/4. . Su valor tendra que

Pruebas teoricas (sobre toda la secuencia): La sencillez de los generadores de congruencia lineal permiten demostrar propiedades importantes: - Para determinar valores de i se obtienen secuencias de periodo mximo . Por ejemplo, si es una potencia de 2, bastar con que sea impar y sea igual a un mltiple de 4 mas 1.

- Test espectral: si se forman vectores con

valores consecutivos,

estos forman hiperplanos paralelos en el espacio k -dimensional. La separacin entre los planos tiene que ser la mnima posible. 2 Distribuciones no uniformes El problema a tratar ser el de obtener una secuencia con densidad de probabilidad dada , definida en el intervalo . a partir de una

secuencia de nmeros con distribucin uniforme

Para resolver este problema utilizaremos el mtodo del cambio de variable . Que concretamente consistir en buscar una transformacin obtener la distribucin deseada. Si la densidad de probabilidad de tenemos: para es ,

Si

la integracin de esta ecuacin resulta ser

Si sabemos calcular la integral, obtenemos una relacin del tipo se tiene que invertir para poder obtener 2.1 Ejemplos: Distribucin exponencial. Para obtener con distribucin

, que

(1)

entonces nos queda la ecuacin

por lo tanto, el cambio adecuado ser

Distribucin normal. Para obtener ecuacin

, nos queda la siguiente

La integral no se puede resolver analticamente, y menos aun invertir la relacin para obtener . La alternativa es aplicar el algoritmo de Box, con distribucin

Muller. Que permite obtener 2 valores independientes

si son las coordenadas de un punto del plano, la densidad de probabilidad de sus coordenadas polares es

Por lo tanto,

tiene la densidad de probabilidad

. Se

pueden obtener a partir de 2 nmeros . Por lo tanto transformaciones

con las transformaciones se pueden obtener con las

(2)

Mtodo de aceptacin-rechazo: Es un mtodo sencillo y general, aunque en ocasiones no muy eficiente. Sea definida en un intervalo finito, ,y y una cota superior de Entonces: (3) .

Se generan dos valores aleatorios

De esta manera el valor aparece con una densidad de probabilidad , aunque no se aprovechan todos los valores que obtenemos en la realizacin del mtodo. De todos modos, este es el nico mtodo disponible cuando la distribucin de probabilidades es complicada. De hecho es la base del algoritmo de Metropolis, posiblemente el ms utilizado en fsica computacional.

BIB I tt ://www.l w tt ://w l f fi i . /i / t i i / t/

A IA _ l / i t i l i / /PA E5. f

. l .

S-ar putea să vă placă și