Está en la página 1de 8

Simulación De Número Aleatorios

Un número aleatorio es un resultado de una variable al azar especificada por una


distribución. Los algoritmos para la generación de valores uniformemente distribuidos
están presentes en todas las calculadoras y lenguajes de programación.

El éxito de este tipo de generadores de valores de una variable aleatoria depende de la


elección de los cuatro parámetros que intervienen inicialmente en la expresión anterior:

 El valor inicial o semilla: x0


 La constante multiplicativa: a
 La constante aditiva: c
 El número m respecto al cual se calculan los restos

Estos cuatro valores deben ser números enteros no negativos y que cumplan la siguiente
condición: x0,a,c < m.

La mayor parte de los generadores de números aleatorios son, en realidad,


pseudoaleatorios; se calcula (o introduce internamente) un valor x0, que llamaremos
semilla, y, a partir de él, se van generando x1, x2, x3, ...

Siempre que se parta de la misma semilla, se obtendrá la misma secuencia de valores.

Por la condición anterior, es evidente que todos los valores generados por este
procedimiento son números enteros entre 0 y m-1. El número máximo de cifras distintas
que pueden obtenerse con el procedimiento descrito es m, así que llegará un momento
en que el primer número generado se repetirá produciéndose un ciclo.

PROPIEDADES DESEADAS DE BUENOS GENERADORES

Las propiedades deseadas del generador son las siguientes:

1. Deben ser eficientes computacionalmente: dado que típicamente se requieren


varios miles de números aleatorios por corrida, el tiempo de procesador requerido
para generarlos debe ser pequeño.
2. El periodo debe ser largo: periodos cortos limitan la longitud aprovechable de una
corrida de simulación porque el reciclaje resulta en una repetición de secuencias
de eventos.
3. Los valores sucesivos deben ser independientes y uniformemente distribuidos: la
correlación entre números sucesivos debe ser pequeña y si es significante indica
dependencia.

Las primeras dos propiedades son relativamente fáciles de implementar. La tercera


requiere un conjunto de pruebas estadísticas.

Secuencias lineales recursivas.

La mayoría de los RNG (siglas en inglés) están basados en congruencias lineales de la


forma:

xn = (a1xn−1 + . . . + akxn−k) mod m

Donde: m se llama módulo


a1, . . . , ak son enteros entre −m + 1 y m − 1 llamados multiplicadores con
(ak ≠ 0) y k es el orden de la recurrencia.
La longitud del periodo máximo es mk − 1.

Método de congruencias aditivas.

Es un método rápido, puesto que no necesita realizar multiplicación. Se precisa una


secuencia de números x1, x2 . . . , xn. El generador produce una extensión de la secuencia
xn+1, xn+2, . . . de la forma siguiente:

Por definición a = bmodm si a−b es divisible por m (resto 0). Por ejemplo, en módulo
4, los números 2, 6, 10, 14 son equivalentes porque (10 − 2), (10 − 6) . . . son todos
divisibles por 4. Hay que tener en cuenta que, cuando utilizamos módulo m, los valores
que resultarán estarán comprendidos entre 0 y m-1.

Ejemplo:
Sea una secuencia de enteros dados: x1, x2, x3, x4 y x5 (57, 34, 89, 92 y 16), por tanto n =
5. Consideremos m = 100. La secuencia anterior puede ser ampliada por este método:
Los números aleatorios se obtienen a partir de la relación : Ui−n = Xi /m para i = n + 1, n +
2, . . .. En el caso anterior los números serían:

U1 = X6/ 100 = 0,73


U2 = X7/100 = 0,07
U3 = X8/100 = 0,96

GENERADORES CONGRUENCIALES-LINEALES (GCL)

En 1951, D. H. Lehmer descubrió que residuos de potencias sucesivas de un número


tienen buenas propiedades aleatorias:

Una expresión equivalente para calcular xn después de calcular xn-1 es:

Los parámetros a y m son llamados multiplicador y modulo respectivamente. Muchos de


los generadores actuales son generalizaciones de la propuesta de Lehmer y tienen la
siguiente forma:

xn = (axn−1 + b) mod m

en donde los x son enteros entre 0 y m-1, y las constantes a y b son no-negativas. La
selección de a, b, y m afectan el periodo y la autocorrelación en la secuencia. Entre los
resultados de los estudos realizados con estos generadores tenemos:
1. El modulo m debe ser grande. Dado que los x están entre 0 y m-1, el periodo nunca
puede ser mayor que m.
2. Para que el computo de mod m sea eficiente, m debe ser una potencia de 2, es decir,
2k. En este caso mod m puede ser obtenido truncando el resultado y tomando en k bits a
la derecha.

GENERADORES COMBINADOS
Es posible combinar generadores para obtener “mejores” generadores. Algunas de las
técnicas usadas son:
1. OR-exclusivo de números aleatorios de dos o más generadores. Esta técnica es similar a
la anterior excepto que la suma es reemplazada por un or-exclusivo bit por bit. Se ha
demostrado que esta técnica aplicada a números ligeramente aleatorios puede ser usada
para generar números con mayor aleatoriedad.
2. Barajeo. Usa una secuencia como un índice para decidir qué número generado por otra
secuencia será retornado. Por ejemplo, uno de estos algoritmos usa un arreglo de tamaño
100 que contiene números de una secuencia aleatoria xn . Para generar un número
aleatorio se genera un número aleatorio yn (entre 0 y m-1) para obtener el índice i = 1 +
99yn / (m-1). El valor del i-esimo elemento del arreglo es devuelto. Un nuevo valor xn es
calculado y almacenado en la i-esima localidad.

SELECCIÓN DE LA SEMILLA
En principio la semilla no debería afectar los resultados de la simulación. Sin embargo, una
mala combinación de semilla y generador pueden producir conclusiones erróneas. Si el
generador es de periodo completo y solo se requiere una variable aleatoria, cualquier
semilla es buena. Hay que tener especial cuidado en simulaciones que requieren números
aleatorios para más de una variable (simulaciones de secuencias múltiples), que es la
mayoría de los casos.

Por ejemplo, la simulación de una cola simple requiere generar llegadas y servicios
aleatorios y requiere dos secuencias de números aleatorios.

Recomendaciones para la selección de las semillas:

1. No use cero. Cero funciona para generadores GCL mixtos pero hace que los
multiplicativos se queden en cero.
2. Evite valores pares. Si un generador no es de periodo completo (por ejemplo GCL
multiplicativo con modulo m = 2k ) la semilla debe ser impar. En otros casos no importa.
3. No subdivida una secuencia. Usar una única secuencia para todas las variables es un
error común.

5. Reutilice semillas en replicaciones sucesivas. Si el experimento es replicado varias veces,


la secuencia no necesita ser reinicializada y se puede usar la semilla dejada en la
replicación previa.

6. No use semillas aleatorias. Semillas aleatorias, como por ejemplo la hora del día, causan
dos problemas:
• La simulación no puede ser reproducida.
• No se puede garantizar que secuencias múltiples no se solapen.

GENERACIÓN DE PROCESOS ESTOCÁSTICOS


Procesos de Poisson

La generación de un proceso de Poisson o, más en general, un proceso de “vida” y/o


“muerte” es asimilable a la generación del correspondiente proceso de los tiempos de
“llegada”, T1, T2,….

Procesos de Poisson homogéneos

Como es bien conocido, un proceso de Poisson homogéneo, con tasa o frecuencia de


“llegadas” λ>0, constante, se puede simular a partir de la generación de una serie de
“tiempos” Ti= Ti-1+(logRi)/λ a partir de incrementos de tiempo iid con distribución
exponencial de parámetro λ, con densidad f(t)=λexp(−λt) para t>0. Esto es equivalente a
que el proceso complementario de “contajes” de llegadas en un tiempo t, que
indicaremos
indistintamente Nt ó N(t), tenga distribución de Poisson de parámetro λt.

Procesos de Poisson no homogéneos

A menudo son más realistas los modelos basados en procesos de Poisson no homogéneos,
en los que la tasa de llegadas es una función del parámetro de tiempo, λ(t). Esta
suposición se puede introducir estableciendo que la probabilidad de una o más llegadas
en un tiempo δt a partir de t, es aproximadamente proporcional a δt,

En este caso resulta que, para un tiempo prefijado t0, , con

Los tres métodos más conocidos de generación de un proceso de Poisson no homogéneo


de este tipo se basan en la modificación de la escala de tiempo, en el condicionamiento y
en una adaptación del método de rechazo.

1. Cambio de la escala de tiempo


2. Métodos basados en el condicionamiento
3. Rechazo a partir de un proceso homogéneo
Generación de procesos gausianos

Uno de los procesos estocásticos con espacio de estados y parámetro continuo más
importantes en las aplicaciones es el proceso {Xt}, donde para todo n y todo t1,…,tn,
. Aunque los instantes t1,…,tn para los que se desea
generar una realización del proceso pueden corresponder a cualquier valor positivo, a
menudo interesa el caso en el que son valores equiespaciados. Sin pérdida de generalidad
se puede suponer que se pretende generar el caso μn = 0.

Aparentemente, el problema sigue siendo el de generar vectores con distribución normal


multivariante. Recordemos que los dos métodos principales son:

Método de Cholesky

1. Obtengamos la matriz L, triangular inferior, tal que Σn = L·L’,


2. generemos Z = (Z1,…,Zn) iid N(0,1),
3. finalmente, X = L·Z.

Método condicional

Para la distribución normal multivariante, todas las distribuciones condicionales son


también normales. En concreto, la matriz de varianzas-covarianzas de

se puede expresar como:

Si ya se ha generado hasta el instante tn, es decir, se ha obtenido una realización


se tiene la siguiente distribución
condicionada

Los dos métodos son equivalentes en el sentido de que producirían la misma secuencia de
valores a partir de la misma secuencia de valores independientes generados según una
N(0,1). En principio el método de Cholesky es más eficiente para n fijo, mientras que el
método condicional permitiría generar una secuencia de longitud indefinida. En realidad el
problema de la generación de procesos gausianos no coincide exactamente con el de
generar vectores normales, como mínimo por dos razones:
a) n puede ser muy grande; no solamente la velocidad puede ser un factor limitante,
también puede serlo la memoria, al tener que almacenar y manipular matrices de
varianzas-covarianzas enormes,
b) sería deseable poder continuar fácilmente una serie de longitud n previamente
generada.

En principio ninguno de los dos métodos anteriores admite muchas mejoras.


Pero aquí es donde puede ser decisiva la estructura precisa de la matriz de varianzas-
covarianzas: en general no interesa simular un proceso con matriz cualquiera sino con una
estructura concreta. El caso más interesante es el de un proceso estacionario, con matriz
de correlaciones con estructura de Toeplitz:

especificada totalmente por el vector rn = ( ρ1, ρ2,…, ρn). En este caso el algoritmo
condicional se puede mejorar bastante puesto que:

Donde:

son las soluciones de las ecuaciones de Yule-Walker, Σny = −rn ,


obtenidas mediante el algoritmo de Durbin. Este algoritmo de generación no es muy
eficiente pero tiene pocos requerimientos de memoria. A costa de un consumo mucho
mayor de memoria, se convierte en un algoritmo rápido (en cuanto a tiempos marginales
de generación, es decir, para generar los valores propiamente, sin contar el tiempo de
inicialización) si se almacena previamente una matriz con todas las soluciones de las
ecuaciones de Yule-Walker:
Comparación de los métodos para generar procesos gausianos

Los métodos expuestos en los puntos anteriores tienen sus ventajas y sus inconvenientes.
En general se puede decir que cada investigador puede elegir entre ellos en función de sus
necesidades y de su valoración de tres características: generalidad, eficiencia y estabilidad
numérica. Si “–“ significa la peor valoración, “x” una valoración intermedia y “+” la mejor,
los tres métodos estarían situados en la siguiente escala:

También podría gustarte