Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introducción
Este capítulo trata sobre la generación de números aleatorios. La misma es necesaria para la
simulación de sistemas estocásticos como se verá en los siguientes capítulos. En primer lugar
se definirá qué se entiende por número aleatorio. A continuación se estudiarán las pruebas a
que debe ser sometido un generador de número aleatorios antes de ser aceptado. Finalmente,
se presentarán métodos para generar variables que siguen distribuciones de frecuente
aplicación.
Esta función es graficada en la Figura 1. El valor esperado de cada número Ri es dado por:
1
x2 1
E ( R) = ∫ x dx =
1
= (2)
0 2 0 2
0 1 x
Figura 1: Distribución uniforme.
Como ejemplo del método de congruencia lineal se generará una secuencia para a = 17,
c = 43, m = 100 y X0 = 27. En este caso, el entero generado estará entre 0 y 99 debido al valor
del módulo. Note también, que si se necesita generar una secuencia de números aleatorios
entre 0 y 1, esta puede ser generada por:
X
Ri = i (5)
m
Como puede deducirse de este ejemplo, debido a que Xi es un entero del conjunto {0, 1, 2, ...,
(m-1)}, los números aleatorios Ri generados con este método sólo pueden asumir valores del
Teoría de Modelos y Simulación. Generación de Números Aleatorios. 2
conjunto finito I = {0, 1/m, 2/m, ..., (m-1)/m}. Esto significa que se tiene una distribución
discreta en lugar de una continua. Ésta será una buena aproximación cuando el módulo sea
grande. Cuando esto ocurra, no existirán grandes huecos (gaps) entre los números generados,
y se tendrá una máxima densidad.
Para obtener la máxima densidad y evitar los ciclos (recurrencia de la misma secuencia de
números ya generados) el generador debería tener el periodo más grande posible. El máximo
periodo puede lograrse eligiendo apropiadamente los valores de los parámetros del generador,
por ejemplo (Banks et al., 1996):
• Para m = 2b y c ≠ 0, el máximo periodo es P = m, y puede lograrse con un valor de c
que sea un número primo relativo a m (esto es, que el máximo factor común entre
ambos sea 1), y a = 1+4k. k y b son enteros.
• Para m = 2b y c = 0, el máximo periodo es P = m/4, y puede lograrse con un valor
impar para la semilla X0, y a = 3+8k, o a = 5+8k. k y b son enteros.
• Para m número primo y c = 0, el máximo periodo es P = m-1, y puede lograrse con un
valor de a tal que el menor entero k que hace que a k-1sea divisible por m es k = m-1.
i X i Xi X i X i
0 1 2 3 4
1 13 26 39 52
2 41 18 59 36
3 21 42 63 20
4 17 34 51 4
5 29 58 23
6 57 50 43
7 37 10 47
8 33 2 35
9 45 7
10 9 27
11 53 31
12 49 19
13 61 55
14 25 11
15 5 15
16 1 3
Cuando la semilla es 1, la secuencia generada asume valores del conjunto {1, 5, 9, 13, ..., 53,
57, 61}. Los huecos entre los números aleatorios Ri son grandes (5/64-1/64 = 0.0625,
densidad insuficiente), el periodo es demasiado corto; por lo tanto, no se recomienda la
utilización de este generador.
Generadores combinados
Cuando la aplicación requiere de un periodo mayor al que se puede alcanzar con un generador
simple, se recurre a los generadores combinados de congruencia lineal. Para generar la
secuencia de Xi y Ri requerida, este generador necesita las salidas Xi,j, j = 1..k, de k diferentes
generadores de congruencia multiplicativa cuyos parámetros tienen los valores apropiados
para asegurar un periodo mj-1. El generador j produce la salida Xi,j entera uniformemente
distribuida de 1 a mj-1. La combinación se calcula mediante las siguientes fórmulas:
k
X i = ∑ ( −1) j −1 X i , j mod ( m1 − 1) (6)
j =1
Xi
m Xi > 0
Ri = 1 (7)
m −1
1 Xi = 0
m1
La Figura 2 muestra en forma gráfica el principio de este método. Primero, se grafica la curva
de distribución acumulada F(X) correspondiente a la distribución deseada. Luego, se genera
un número aleatorio R, con el cual se ingresa por la ordenada y se intercepta la curva F(X), el
número X correspondiente a la abscisa del punto interceptado es un número aleatorio que
tiene la distribución deseada.
F(X)
0
A X B
X = F −1 ( R ) (10)
Puesto que F(x0) pertenece al intervalo [0,1], la segunda igualdad plantea que R es un número
uniformemente distribuido en dicho intervalo, y como F(x) es la función de probabilidad
acumulada de X, se concluye que esta variable tendrá la distribución deseada.
Distribución exponencial
Utilizando el método de la transformada inversa a continuación se desarrolla un generador de
variables aleatorias con distribución exponencial. La función de densidad de probabilidad es:
Esta distribución generalmente se utiliza para modelar los tiempos entre llegadas de clientes.
En ese caso, el parámetro λ puede ser interpretado como el número medio de arribos por
unidad de tiempo, y 1/λ sería el tiempo medio entre arribos.
−1
F −1 ( R) = ln(1 − R ) = X (15)
λ
Dado que R está uniformemente distribuido en el intervalo [0,1], entonces (1-R) también lo
está; por lo tanto se puede hacer la siguiente simplificación:
−1
X= ln( R) (16)
λ
Distribución uniforme
Para generar una variable X con distribución uniforme en el intervalo [a, b], la función de
densidad de probabilidad es:
1
a≤ x≤b
f ( x) = b − a (17)
0 otherwise
Simplificando, se obtiene:
X = α [ − ln( R )]1 / β (24)
Distribución triangular
Considere que la distribución deseada es una distribución triangular con la siguiente función
de densidad de probabilidad:
x 0 ≤ x ≤1
f ( x) = 2 − x 1 < x ≤ 2 (25)
0
otherwise
( x − a) 2
a≤ x<b
(b − a ) (c − a )
F ( x) = (29)
b − a + ( x − b)
2
b≤ x ≤c
c − a (c − b) (c − a )
Distribución empírica
Cuando no es posible encontrar una distribución teórica para modelar los datos, entonces se
utiliza una distribución empírica. Esta puede estar expresada como una tabla de frecuencias o
directamente una tabla de datos sin procesar. En el primer caso se cuenta con intervalos y la
frecuencia de cada uno de ellos. Se calcula la frecuencia relativa y luego la acumulada, como
se muestra en el siguiente ejemplo.
Tabla 2: Tabla de frecuencias.
Intervalo Frecuencia Frecuencia relativa Frecuencia acumulada
0.25 ≤ x ≤ 0.5 31 0.31 0.31
0.5 < x ≤ 1.0 10 0.10 0.41
1.0 < x ≤ 1.5 25 0.25 0.66
1.5 < x ≤ 2.0 34 0.34 1.00
Distribuciones discretas
Las distribuciones discretas se pueden generar utilizando la transformada inversa de la misma
manera que se utilizó para las distribuciones empíricas, sólo que esta vez no es necesario la
interpolación. Por ejemplo, si se desean generar los números 0, 1 y 2 con las probabilidades
0.50, 0.30 y 0.20 respectivamente, se construye la siguiente tabla donde ya se calculó la
probabilidad acumulada:
Tabla 6: Tabla para una distribución discreta.
i Entrada Salida
ri xi
1 0.50 0
2 0.80 1
3 1.00 2
Se sabe que B2 = Z12 + Z22 tiene una distribución chi-cuadrado con grado de libertad 2, la cual
es equivalente a una distribución exponencial con media 2. Entonces, el radio B puede ser
generado con:
B = (− 2 ln( R1 ))
1/ 2
(37)
Una rutina basada en este método que genera valores Z1 y Z2 con distribución normal estándar
es:
Procedure Polar
Begin
Repeat
Generar R1,R2
v1 := 2*R1 - 1
v2 := 2*R2 - 1
w := v 12 + v22
Until w ≤ 1
u := (-2*ln(w)/w)1/2
Z1 := v1*u
Z2 := v2*u
End.
Otro generador de distribución normal utiliza el teorema del límite central que plantea: “La
distribución del promedio de n variables aleatorias independientes idénticamente distribuidas
con media µ y varianza σ2 se aproxima a una distribución normal con media µ y varianza
σ2/n”. El generador es:
12
X = µ + ∑ Ri − 6 σ (41)
i =1
Este generador utiliza la sumatoria de una serie de números aleatorios para obtener la
distribución deseada. En la sección siguiente se estudian otros generadores que utilizan este
mismo principio.
Método de la convolución
La distribución de probabilidad de la suma de dos o más variables aleatorias independientes
se denomina convolución de las distribuciones correspondientes a las variables sumadas. El
método de la convolución suma dos o más variables aleatorias para obtener una nueva con la
distribución deseada. El centro del estudio ya no es la función de probabilidad acumulada de
la distribución deseada, sino su relación con otras distribuciones más fácilmente generables.
Distribución de Erlang
Una variable aleatoria X con distribución Erlang con parámetros (K, θ) puede ser modelada
con la suma de K variables aleatorias independientes Xi con distribución exponencial y media
1/(K θ); esto es:
K
X = ∑ Xi (42)
i =1
Como ejemplo, suponga que a un depósito llegan camiones cuyos tiempos entre arribos
siguen una distribución exponencial con media 0.1 h. A la entrada son desviados
alternativamente hacia el sur y hacia el norte. Se desea modelar el arribo de camiones al sector
sur. Los tiempos de llegada entre los camiones que llegan al sector sur serán iguales a la suma
de dos tiempos de arribos sucesivos al depósito; es decir, seguirán una distribución Erlang con
K = 2 y 1/θ = 0.2 h.
Distribución de Poisson
Una variable N con distribución Poisson puede ser interpretada como el número de arribos por
unidad de tiempo a velocidad α en un proceso Poisson. En este proceso, los tiempos entre
arribos A1, A2, ... están exponencialmente distribuidos con una velocidad α (es el número
medio de arribos por unidad de tiempo). Por lo tanto, se puede construir un generador que
determine n tal que:
A1 + A2 + ... + An ≤ 1 < A1 + ... + An + An +1 (44)
Operando:
n n +1
n n +1
ln ∏ Ri ≥ −α > ln ∏ Ri (47)
i =1 i =1
n n +1
∏ Ri ≥ e −α > ∏ Ri (48)
i =1 i =1
Note que en promedio será necesario generar α+1 números con distribución exponencial por
cada valor de N. Cuando α ≥ 15 esta técnica se vuelve ineficiente, y conviene utilizar una
técnica basada en la distribución normal:
N −α
Z= (49)
α
donde Z tiene una distribución normal estándar. Entonces, para cada valor de Z se puede
calcular N con:
N = Round α + α Z ( ) (50)