UNIDAD II NÚMEROS ALEATORIOS Y PSEUDO ALEATORIOS 1. ¿Qué son los números aleatorios y pseudo aleatorios y para qué sirven? Los números aleatorios tienen la propiedad de ser obtenidos al azar, es decir, son resultado de un proceso en el cual su resultado no es predecible ya que todo número tiene la misma probabilidad de ser elegido y la elección de uno no depende de la elección del otro. La palabra aleatorio se usa para expresar una aparente carencia de propósito, causa, u orden. El ejemplo clásico más utilizado para generarlos es el lanzamiento repetitivo de una moneda o dado. Los números pseudo aleatorios son números generados en un proceso que parece producir números al azar, pero no lo hace realmente, de aquí el prefijo pseudo que quiere decir falso, ya que su generación parte de algoritmos determinísticos, lo cual nos quiere decir que obtendremos siempre el mismo resultado bajo las mismas condiciones iniciales. Estas condiciones se refieren a varios parámetros de arranque, siendo el valor inicial, también llamado semilla, el denominador común de todos los algoritmos. Estos números tienen la característica de que deben seguir una distribución Uniforme, es decir que pueden tomar cualquier valor dentro del intervalo (0, 1 ), entonces podemos decir que los números pseudo aleatorios son números entre 0 y 1 que han pasado por un tamizado de pruebas para poder determinar que tendrán una función aproximada a la realidad es decir, haya aleatoriedad. La función de los números pseudo aleatorios es que a partir de ellos podemos generar variables aleatorias las cuales están sujetas en el mayor de los casos, a distribuciones estadísticas que son las que se usan para establecer el comportamiento de materiales, sucesos, personas, etc., en todo proceso de simulación.
2. ¿Para qué y cómo se usan dichos números? Se usan como una fuente confiable de variabilidad dentro de los modelos de simulación fundamentalmente porque las sucesiones de números pseudoaleatorios son más rápidas de generar que las de números aleatorios.
La simulación es el proceso de diseñar un modelo de un sistema real, que servirá para dirigir experimentos con el propósito de entender, explicar, analizar o mejorar el comportamiento del sistema. Para simular el comportamiento de una o más variables aleatorias es necesario contar con un conjunto suficientemente grande de números aleatorios, pero por desgracia generar una sucesión de números que sean completamente aleatorios resulta muy complicado, ya que tendríamos que generar una sucesión infinita de valores que nos permitiera comprobar la inexistencia de correlaciones entre ellos, lo que sería costoso y tardado volviendo impráctica la simulación; por ello es necesario utilizar los números pseudoaleatorios de los cuales podemos asegurar con un nivel alto de confiabilidad que se comportan de manera similar a un conjunto de números aleatorios. La experimentación directa sobre la realidad puede algunos tipo de problemas com o: costo muy alto, gran lentitud, en ocasiones las pruebas son destructivas, puede no ser ética (sobre todo si están involucrados seres humanos), puede resultar imposible, por ejemplo, para predecir sucesos futuros. 3. ¿Cómo se generan los números pseudo aleatorios entre 0 y 1? Los números pseudo aleatorios se generan mediante algoritmos determinísticos, es decir aquellos en que se obtiene el mismo resultado bajo las mismas condiciones iniciales, por lo cual requieren parámetros de arranque. Sea una secuencia r = {ri ,n ,rs, rn} con n valores distintos, se le conoce como el conjunto necesario d^ números entre 0 y 1 para realizar una simulación, siendo n el periodo o ciclo de vida. Esta secuencia forma la parte principal de la simulación de procesos estocásticos (basado en probabilidades) y son usados para generar la conducta de variables aleatorias, continuas o discretas. Estos números se consideran pseudo-aleatorios porque es imposible el generar números realmente aleatorios. Es preciso contar con un conjunto r grande, esto con la finalidad de simular el comportamiento de una o más variables aleatorias, además el periodo de vida debe ser amplio debido a que es conveniente realizar varias réplicas de simulación, corriendo cada una con números pseudo aleatorios distintos. Es importante señalar que r se considera satisfactorio si pasa sin problema las pruebas de uniformidad e independencia, solo así podrá ser usado en la simulación.
Los algoritmos determinísticos para generar números pseudo aleatorios se dividen en no congruenciales y congruenciales, éstos a su vez se dividen en lineales y no lineales. Algoritmos No Congruenciales a)
A lgoritm o de cuadrados m edios Propuesto en la década de los cuarenta del siglo X X por Von Neumann y Metrópolis, este algoritmo requiere un número entero, llamado semilla, con D dígitos, este es elevado al cuadrado para seleccionar del resultado los D dígitos del centro; el primer número r se determina simplemente anteponiendo el " 0" a esos dígitos. Para obtener el segundo r se sigue el mismo procedimiento, sólo que ahora se elevan al cuadrado los D dígitos del centro que se seleccionaron para obtener el primer n. Este método se repite hasta obtener n números n. Pasos para generar números con el algoritmo de cuadrados medios:
1 . Seleccionar semilla (X 0) con D dígitos (D > 3). 2 . Sea X 0 = resultado de elevar X 0 al cuadrado; sea X i = los D dígitos del centro, y sea r = 0.D dígitos del centro. 3. Sea Yi = resultado de elevar Xi al cuadrado; sea Xi +1 = los D dígitos del centro, y sea r = 0.D dígitos del centro para toda i = 1 , 2 , 3,..., n. 4. Repetir el paso 3 hasta obtener los n números r deseados. Nota: Si no es posible obtener los D dígitos del centro del número Yi, agregue ceros a la izquierda del número Yi. Ejemplo Generar los primeros 5 números r a partir de una semilla X 0 = 5 735, de donde se puede observar que D = 4 dígitos. Solución: Yo = (5735 )2 = 32 890 225 Y 1 = (8902)2 = 79 245 604 Y 2 = (2456)2 = 06 031 936 Y 3 = (0319)2 = 101 761 Y 4 = (0176)2 = 030 976
X 1 = 8902 X 2 = 2456 X 1 = 0319 X 1 = 0176 X 1 = 3097
ri = 0.8902 ri = 0.2456 ri = 0.0319 ri = 0.0176 ri = 0.3097
Generalmente este algoritmo es incapaz de generar una secuencia de ri con periodo de vida n grande. En ocasiones sólo es capaz de generar un
número, Por ejemplo si X 0 = 1 000, entonces X 1 = 0000; ri = 0.0000 y se dice que el algoritmo se degenera con la semilla de X 0 = 1 000. b) A lgoritm o de productos m edios La mecánica de generación de números pseudo aleatorios 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. A continuación se presentan con más detalle los pasos del método para generar números con el algoritmo de producto medios.
1 . Seleccionar una semilla (X 0) con D dígitos (D > 3). 2 . Seleccionar una semilla ( X ) con D dígitos (D > 3). 3. Sea Y 0 = X 0* X 1; sea X 2 = los D dígitos del centro, y sea r = 0.D dígitos del centro. 4. Sea Y i = X i* X i+1; sea X i+2 = los D dígitos del centro, y sea ri+1 = 0 .D dígitos del centro para toda f¡= 1,2,3,...,n; 5. Repetir el paso 4 hasta obtener los n números ri deseados. Nota: Si no es posible obtener los D dígitos del centro del número Y i agregue ceros a la izquierda del número Ti. c) A lgoritm o de multiplicador constante Este algoritmo no congruencial es similar al algoritmo de productos medios. Los siguientes son los pasos necesarios para generar números pseudo aleatorios con el algoritmo de multiplicador constante.
1 . Seleccionar una semilla (X 0) con D dígitos (D > 3). 2 . Seleccionar una constante (a) con D dígitos (D > 3). 3. Sea Y 0- a*X0; sea X 1 = los D dígitos del centro, y sea ri = 0.D dígitos del centro. 4. Sea Y i = a*Xi; sea X i+1 = 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. Nota: Si no es posible obtener los D dígitos del centro del número Y i agregue ceros a la izquierda del número Y i.
Algoritmos Congruenciales d) A lgoritm o Lineal Este algoritmo congruencial fue propuesto por D.H. Lehmer en 1951. Según Law y Kelton, este algoritmo ha sido el más usado. El algoritmo congruencial lineal genera una secuencia de números enteros por medio de la siguiente ecuación recursiva: X i+1 = (aXi + c) mod (m)
i= 0, 1 , 2 , 3... n donde;
X 0 = es la semilla, X 0 >0 y debe ser entero. a = es la constante multiplicativa, a >0 y debe ser entero. c = constante aditiva, c >0 y debe ser entero. mod m = modulo, significa realizar las operaciones anteriores y dividir el resultado entre el valor de m, para obtener solamente el residuo. Es importante señalar que la ecuación recursiva del algoritmo congruencial lineal genera una secuencia de números enteros S= { 0, 1 , 2 , 3 , . , m -1}, y que para obtener números pseudo aleatorios en el intervalo (0, 1 ) se requiere la siguiente ecuación: Xi
7 ri = ---7 7 1 -1 Para que el algoritmo sea capaz de lograr el máximo periodo de vida n, es preciso que dichos parámetros cumplan ciertas condiciones, Banks, Carson, Nelson y Nicol sugieren lo siguiente: m = 2g a = 1 + 4k k, debe ser entero. c, relativamente primo a m. g, debe ser entero. Bajo estas condiciones se obtiene un periodo de vida máximo N = m= 2 g. Ejemplo: Generar suficientes números entre 0 y 1 con los parámetros X 0 = 6, k =3, g =3, c =7, hasta encontrar el periodo de vida máximo (N). a = 1 + 4(3) = 13 X 0= X 1= X 2= X 3=
m = 23 =
N= 8
6 (13*6+7) mod 8 = 5 (13*5 + 7) mod 8 = 0 (13*0+7) mod 8 = 7
n = 5 /7 = 0.714 r 2 = 0 /7 = 0.000 r 3 = 7 /7 = 1.000
X 4= X 5= Xa = X 7= X 8=
(13*7+7) (13*2+7) (13*1 + 7) (13*4+7) (13*3 + 7)
mod mod mod mod mod
8= 8= 8= 8= 8=
2 1 4 3
6
r4 = r5 = ra = r7= r 8=
2 /7 1/7 4 /7 3 /7 6 /7
= = = = =
0.214 0.142 0.571 0.428 0.857