Vistas de página en total

Unidad Dos: Números aleatorios y pseudoaletorios


2.1 Números aleatorios: definición, propiedades, generadores y tablas

Introducción:
Los sistemas reales frecuentemente tienen valores de tiempo y cantidades que varían dentro de un rango y de acuerdo a una función específica de densidad, definida por una distribución de probabilidad. Por ejemplo, si el tiempo que se tarda una máquina en procesar una pieza se distribuye entre 2.2 minutos y 4.5 minutos, esto se definirá como una distribución de probabilidad en el modelo de simulación. Durante la simulación, cada vez que una pieza entre a esta máquina y sea procesada, el simulador generará un número al azar entre 2.2 y 4.5 minutos para simular el tiempo de procesamiento de esa pieza. Cada vez que generamos un valor a partir de una distribución, a ese valor se le llama variable aleatoria. Para generar variables aleatorias, es necesario utilizar números aleatorios.

Definición:
Un número aleatorio es aquél que es generado a partir de la distribución Uniforme U(0,1).
 Propiedades y generadores de números aleatorios.
  •  Su generación se basa en el uso de mecanismos físicos. Entre las distintas propuestas se incluyen el recuento de partículas emitidas por una explosión, el lanzamiento de monedas, aparatos mecánicos basadas en ruedas de la fortuna, etc.
  •  Tienen el  inconveniente de ser generados lentamente. Además, los números aleatorios no pueden almacenarse de forma automática. Por tanto, se deben buscar procedimientos algorítmicos computacionales que generen números aleatorios de forma muy rápida y los puedan almacenar sin utilizar mucha capacidad de memoria.
Una de las características más poderosas de la simulación es la habilidad de imitar el comportamiento aleatorio que es característico de la mayoría de los sistemas reales. Para poder imitar este comportamiento aleatorio la simulación necesita utilizar un generador de números aleatorios, el cual es responsable de producir un ciclo grandísimo e independiente de números aleatorios.
Hay que aclarar que los números U(0,1) producidos por un generador de números aleatorios (algoritmo computacional) no son aleatorios en el verdadero sentido de la palabra, ya que el generador puede reproducir la misma secuencia de números una y otra vez, lo cual no indica un comportamiento aleatorio. Por esta razón, a los números U(0,1) producidos por un generador (algoritmo) se les llama pseudoaleatorios.

2.2 Números pseudoaleatorios.
Introducción:
Casi todas las aplicaciones comerciales tienen varios generadores de números pseudoaleatorios que pueden generar un conjunto muy grande de números sin mostrar correlación entre ellos, para ello se utilizan métodos preestablecidos que garantizan esta demanda.
Para poder realizar una simulación que incluya variabilidad dentro de sus eventos, es preciso generar una serie de números que sean aleatorios por sí mismos, y que su aleatoriedad se extrapole al modelo de simulación que se está construyendo. En la construcción  del modelo los números aleatorios juegan un papel relevante.
Unas de las primeras tareas que es necesario llevar a cabo consiste en analizar si los números que se utilizaran para “correr” o ejecutar la simulación son realmente aleatorios o no; por desgracia, precisar lo anterior con absoluta certidumbre resulta muy complicado, ya que para ello se tendría que generar un número infinito de valores que permitan comprobar la existencia de correlaciones entre ellos. Esta actividad sería muy costosa y tardada, volviendo impráctico el uso de la simulación aun con las computadoras más avanzadas.

Tomando en cuenta lo anterior, se puede asegurar, con altos niveles de confiabilidad que el conjunto de números que se utilizarán en la simulación se comportan de manera muy similar a un conjunto de números totalmente aleatorios; por ello es que se les denomina números pseudoaleatorios.
Un número pseudoaleatorio es un número U(0,1) producido por un algoritmo matemático.

Propiedades de los números pseudoaleatorios
Es deseable que los números pseudoaleatorios uniformes posean las siguientes características:
  1. Uniformemente distribuidos.
  2. Estadísticamente independientes.
  3. Reproducibles.
  4. Periodo largo.
  5. Generados mediante un método rápido.
  6. Generados mediante un método que no requiera mucha capacidad de almacenamiento de la computadora.
Generar un conjunto de números pseudoaleatorios es una tarea relativamente sencilla, para ello, el lector sólo tiene que diseñar su propio algoritmo de generación. Lo que resulta difícil es diseñar un algoritmo que genere un conjunto de números pseudoaleatorios con periodo de vida suficientemente grande (N) y además pase sin problema las pruebas de uniformidad e independencia, lo cual implica evitar problemas como éstos:
·         Que los números del conjunto no estén uniformemente distribuidos, es decir, que haya demasiados números en un subintervalo y otro muy pocos o ninguno.
·         Que los números pseudoaleatorios sean discretos en lugar de continuos.
·         Que la media del conjunto sea muy alta o muy baja, es decir, que esté por arriba o por debajo de ½.
·         Que la varianza del conjunto sea muy alta o muy baja, es decir, que se localice por arriba o por debajo de 1/12.

En ocasiones se presentan también anomalías como números pseudoaleatorios seguidos por arriba o por debajo de la media; secuencia de números por arriba de la media, seguida por una secuencia por debajo de la media, y viceversa, o varios números seguidos en forma ascendente o descendente.
Existen varios métodos para generar números pseudoaleatorios. A continuación se presentan los más importantes.

El Método de Centros al Cuadrado (Método de los cuadrados medios)
Este método es debido a von Neumann y tiene fundamentalmente sólo interés histórico. El método de centros al cuadrado se apega a la siguiente metodología:
  1. Inicie con un número entero positivo de 4 (2n) dígitos y llámele Z0 (X0), llamado semilla.
  2. Eleve Z0 (X0) al cuadrado para obtener un número de 8 (4n) dígitos. Si es necesario, agregue ceros a la izquierda para hacerlo exactamente de 8 dígitos.
  3. Tome los 4 (2n) dígitos centrales como el próximo número de 4 (2n) dígitos y llámele Z1(X1).
  4. Coloque el punto decimal a la izquierda de Z1(X1) para obtener el primer número pseudoaleatorio U(0,1).
  5. Continué generando de esta forma números pseudoaleatorios U(0,1)
Desventaja del método de centros al cuadrado: Tiene una fuerte tendencia a degenerar rápidamente hacia cero, donde permanecerá por siempre.

La gran mayoría de los generadores de números pseudoaleatorios que se usan en la actualidad son generadores congruenciales lineales, introducidos por Lehmer en 1951.
Los generadores congruenciales lineales generan una secuencia de números pseudoaleatorios en la cual el próximo número pseudoaleatorio es determinado a partir del último número generado.  A continuación se presentan los dos más importantes: el método congruencial mixto lineal y el método congruencial multiplicativo lineal.

Método de Lehmer
El método consiste en los siguientes pasos:
  1. Se toma como semilla un número entero, X0, de n cifras.
  2. Se elige otro entero, c, de k cifras. Suele tomarse k<n.
  3. Se calcula X0 *c, número de a lo sumo, n + k cifras.
  4. Se separan las k cifras de la izquierda de X0*c y al número formado por las n cifras restantes se le resta el que se forma de esas k cifras de la izquierda, dando lugar a X1.
  5. Se repite este proceso tantas veces como sea necesario.
  6. Se devuelven los valores 

Método Congruencial Mixto Lineal

Los valores posibles de Xn+1 son 0, 1, 2,3,…, m-1, m representa el número posible de valores que pueden ser generados.

Fórmula:
Donde:
Xn= la semilla (X0>0)
   a= el  multiplicador (a>0)
   c= constante aditiva (c>0)
  m= Módulo (m>Xn; m>a; m>c)


Periodo del generador = 4
Reglas para la selección de parámetros en el método congruencial mixto lineal
En los ejemplos anteriores se colocaron de manera arbitraria cada uno de los parámetros requeridos: X0, a, c, m. Sin embargo, 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= 2g.


El Método Congruencial multiplicativo
Al igual que el generador congruencial mixto lineal, el generador congruencial multiplicativo determina el próximo número pseudoaleatorio a partir del último número generado, de acuerdo a la siguiente fórmula:
Fórmula:


2.3 Pruebas estadísticas o de aleatoriedad para los números pseudoaleatorios.
Los números pseudoaleatorios  producidos mediante un programa de computadora no son  aleatorios debido a que tales números están completamente determinados por los datos iníciales y tienen una precisión limitada. Sin embargo, en la medida en que esos números pseudoaleatorios pasen determinadas pruebas estadísticas, pueden considerárseles como verdaderos números aleatorios. Las siguientes  pruebas son de las más usadas para la comprobación de la aleatoriedad.
Prueba de los promedios
En la prueba de los promedios se establecen las siguientes hipótesis:
Ho: μ = ½  (los números pseudoaleatorios generados provienen de una distribución U(0,1) con μ =0.50)
Ha: μ≠ ½   (los números pseudoaleatorios generados no provienen de una distribución U(0,1) con μ=0.50)
Prueba de las frecuencias
Esta prueba consiste en dividir el intervalo (0,1) en n subintervalos para luego comparar para cada subintervalo la frecuencia esperada con la frecuencia observada. Si estas frecuencias son bastante parecidas entonces la muestra proviene de una distribución uniforme.
Las hipótesis son:
Ho: Los números pseudoaleatorios provienen de una distribución U(0,1).
Ha: Los números pseudoaleatorios no provienen de una distribución U(0,1).
 
Prueba de Series
Esta prueba se utiliza para comprobar  el grado de aleatoriedad entre números sucesivos. La prueba consiste en formar parejas de números, las cuales son consideradas como coordenadas en un cuadrado unitario dividido en  n2  celdas. En la prueba de series se generan N números pseudoaleatorios de los cuales se forman parejas entre Ui  y Ui + 1, es decir  si se generan 5 números, las parejas que se forman serian:
(U1 , U2),  (U2 , U3),  (U3 , U4),  (U4 , U5).
En seguida se determina la celda a la que pertenece cada pareja ordenada, con lo cual se determina la frecuencia observada de cada  celda.


 Prueba de las corridas
La prueba de las corridas sirve para probar la aleatoriedad de los números generados. Esta prueba se basa en el número de corridas o secuencias ascendentes y descendentes. Una corrida es una secuencia ascendente o descendente de números pseudoaleatorios adyacentes.
Las hipótesis son:
Ho: Los números son pseudoaleatorios U(0,1).
Ha: Los números no son pseudoaleatorios U(0,1).
En este método se coloca el signo  “+”  o  “–” en cada par de números adyacentes. Se puede demostrar que:
Si:                   R = número total de corridas (arriba y abajo)
                        N = tamaño de la muestra

2.4 Método de Montecarlo
La simulación de Montecarlo es un método especialmente útil para analizar situaciones que involucran riesgo con el propósito de obtener respuestas aproximadas cuando el realizar un experimento físico o el aplicar métodos analíticos no es posible o resulta muy difícil o costoso.
La simulación de Montecarlo hace referencia a experimentos que involucran el uso de números pseudoaleatorios. El requisito clave de esta técnica es que los resultados de todas las variables de interés deben ser seleccionados aleatoriamente.
La simulación de Montecarlo ha tenido una gran aceptación en la vida real debido al poder analítico que presenta sin la necesidad de matemáticas complejas.