Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introducción
1 si 0 ≥ x ≥ 1
f (x) =
0 en el caso contrario
R1 2
E(R) = 0 xdx = x2 |10 = 12
x3 1
R1
V (R) = 0 x2 dx − (E(R))2 = 3 |0 − ( 12 )2 = 1
3 − 1
4 = 1
12
Definición formal:
1
Un generador de números aleatorios (nomenclatura inglesa: RNG) puede ser defi-
nido como una estructura G = (S, s0 , T, U, G), donde S es un conjunto conjunto finito
de estados, s0 ∈ S es el estado inicial, T : S → S es la función de transición, U es un
conjunto finito de símbolos de salida, y G : S → U es la función de salida. El gener-
ador comienza con el estado inicial s0 (llamado semilla) y evoluciona de acuerdo con
si := T (si−1 ), para i ≥ 1 y en cada paso i, obtiene la observación ui := G(si ). Se espera
que las observaciones se comporten como si fueran valores de variables aleatorias in-
dependientes e idénticamente distribuidas, uniformemente sobre U. El conjunto U es,
a veces, un conjunto de enteros de la forma 0, . . . m − 1, o un conjunto finito de valores
entre 0 y 1, representación aproximada de la distribución U[0,1). A partir de ahora se
va a considerar este último caso. Puesto que S es finito, la secuencia de estados es, al
final, periódica. El periodo es el entero positivo mas pequeño ρ tal que, dado algún
entero τ ≥ 0 y para todo n ≥ τ , sρ+n = sn . El τ mas pequeño con esa propiedad se
denomina transitorio. Cuando τ = 0 la secuencia se dice que es puramente periódica.
Independientemente de los criterios de calidad estadística, para la elección de un
generador de números aleatorios, también se consideran relevantes: la velocidad, las
necesidades de memoria, la transportabilidad, la repetibilidad, la facilidad de imple-
mentación y la disponibilidad de saltos hacia adelante.
A continuación se detallan algunos de los métodos de generación, atendiendo a su
actualidad más que a su desarrollo histórico.
2
Por definición a = b mod m 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 di-
visibles 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:
Xi
Los números aleatorios se obtienen a partir de la relación : Ui−n = m para i =
n + 1, n + 2, . . .. En el caso anterior los números serían:
X6
U1 = 100 = 0,73
X7
U2 = 100 = 0,07
X8
U3 = 100 = 0,96
...
xn = xn−1 + xn−2
no tienen buenas propiedades aleatorias. Existe una extensión de esta idea de la forma:
Marsaglia(1983) considera que este generador pasa la mayoría de los tests estadísticos.
Utiliza, sin embargo, 17 posiciones de memoria con 17 enteros no todos impares.
3
Generadores de congruencias lineales
Una gran mayoría de los generadores utilizados actualmente utilizan esta técnica
introducida por Lehmer en 1951. Una secuencia de números enteros Z1 , Z2 , . . . está
definida por la fórmula recursiva:
Zi = (aZi−1 + c) mod m
0 ≤ Zi < m
Z1 = (aZ0 + c) mod m
Z2 = (aZ1 + c) mod m = (a2 Z0 + ca + c) mod m
Z3 = (aZ2 + c) mod m = (a3 Z0 + ca2 + ca + c) mod m
...
Por inducción:
4
hay como mínimo mil millones de valores posibles para Ui espaciados todos la misma
distancia. Se considera que esto es una aproximación lo suficentemente buena para la
mayoría de los planteamientos.
Dada la forma de la expresión Zi es inevitable el comportamiento como un bucle,
es decir, que en el momento que se repita un Zi todos los siguentes serán iguales a
los obtenidos hasta ese momento. La longitud de cada uno de esos ciclos se conoce
como periodo del generador y se representa por p. Como Zi solo depende de Zi−1 y
se verifica que 0 ≤ Zi ≤ m − 1 es claro que p ≤ m. Si p = m el generador se llama de
periodo total.
Ejemplo:
Sea m = 16, a = 5, c = 3 y Z0 = 7, la secuencia de los Zi obtenidos será:
Zi = (5Zi−1 + 3) mod 16
i Zi Ui i Zi Ui i Zi Ui i Zi Ui
0 7 - 5 10 0.625 10 9 0.563 15 4 0.250
1 6 0.375 6 5 0.313 11 0 0.000 16 7 0.438
2 1 0.063 7 12 0.750 12 3 0.188 17 6 0.375
3 8 0.500 8 15 0.938 13 2 0.125 18 1 0.063
4 11 0.688 9 14 0.875 14 13 0.813 19 8 0.500
Está claro que en simulación se necesitan generadores con periodos largos, fijando
un m grande sería conveniente conseguir que tuviera periodo total.
Teorema:
El generador definido de la forma Zi = (aZi−1 + c) mod m tiene periodo total si y solo
si se cumplen las siguientes condiciones:
5
a = 75 = 16,807
m = 231 − 1 = 2,147,483,647
c=0
X1 = 2,074,941,799
X1
U1 = 231
= 0,9662
NOTA.- La rutina de IMSL divide por (m+1) en lugar de hacerlo por m; sin embargo,
para un valor tan grande como el de m, el efecto es despreciable.
SIMSCRIPT II.5 utiliza un generador semejante con a = 630,360,016
Java Este es el generador utilizado para implementar el método nextDouble en la
clase java.util.Random de la biblioteca estándar Java1 . Está basado en una recurrencia
lineal con periodo de longitud 248 , pero cada valor de salida está construido tomando
dos valores sucesivos de la recurrencia lineal, de la forma siguiente:
6
Excel El generador implementado en Microsoft Excel3 es en esencia un LCG (gen-
erador de congruencias lineales), excepto que su recurrencia está dada por:
Generadores de Tausworthe.
Están relacionados con los métodos criptográficos, operan sobre los bits para for-
mar números aleatorios. Se define una secuencia b1 , b2 , . . . de dígitos binarios por re-
currencia.
3
(http://support.microsoft.com/directory)
4
Matsumoto, M. y T. Nishimura. Mersene twister: a 623- dimensionally equidistributed uniform
pseudo-random number generator. ACM Transactions on Modeling and Computer Simulation 8 (1):3-30
7
bi = (c1 bi−1 + c2 bi−2 + . . . + cq bi−q ) mod 2
Para inicializar la secuencia hay que dar valor a los primeros bi hasta q. Esto es equiv-
alente a proporcionar la semilla Z0 en los geneneradores de congruencias.
Ejemplo (Lewis y Payne 1973):
Si r = 3 y q = 5 consideremos b1 , b2 , . . . b5 = 1
Para i ≥ 6 bi = (bi−3 + bi−5 ) mod 2
Los primeros 42 bits son :
z }|{ z }| { z }| { z }| { z }|{ z }| { z }| { z }| {
1111 1 000 11 01 110 1 0100 0010 0 101 10 01 111 10001 10 . . .
El periodo de los bits es 31 (2q − 1)
La cuestión es: una vez obtenida la secuencia de bits bi , como se transforma dicha
secuencia en números aleatorios U(0,1). Una posibilidad es juntar l consecutivos bi
para formar un número de l bits entre 0 y 2l − 1 que será dividido por 2l . En el ejemplo
anterior si se elige l = 4, se obtiene la secuencia:
15 8 13 13 4 2 5 9 15 1
, , , , , , , , , ,...
16 16 16 16 16 16 16 16 16 16
l debe ser como máximo la longitud de palabra del ordenador, también se pueden
elegir secuencias de elementos dejando algunos bits sin utilizar cada vez.
Ventajas:
8
Inconvenientes:
- Aunque la correlación de primer orden (un número con el siguiente) es casi cero
se sospecha que algunos generadores pueden proporcionar valores elevados de
correlaciones de orden elevado.
Combinaciones de generadores.
1. Zi = (Xi + Yi ) mod m.
3. Zi = Xi XOR Yi .
No hay garantía que una combinación del tipo 1 o 3 elimine la no aleatoriedad. Com-
binando un generador de congruencias con otro de Tausworthe se pueden atenuar
muchas de las situaciones no deseadas que se producen. Wichmann y Hill5 informan
de buenos resultados utilizando el método 1), es decir, combinando generadores (en
este caso tres):
9
L’Ecuyer (1988)7 recomienda combinar:
en la forma:
1. No utilizar el cero
Aunque puede ser una semilla válida para los generadores de congruencias lin-
eales mixtos, llevará a cero a los generadores de congruencias lineales multi-
plicativos o a los de Tausworthe.
10
u1 para generar los tiempos entre llegadas y u2 los tiempos de servicio y así
sucesivamente u3 , u4 . . . Esto puede producir una correlación muy fuerte entre
las variables.
c(an −1)
xn = an x0 + a−1 mod m
En algunos libros (Jain 91, pag 455) se proporcionan relaciones de semillas para
secuencias de 100.000 en 100.000, para el generador xn = 75 xn−1 mod (231 − 1)
11
Referencias
James E. Gentle Random Number Generation and Monte Carlo Methods Springer-
Verlag, 1998.
Raj Jain The Art of Computer Systems Performance Analysis Techniques for Experi-
mental Design, Measurement, Simulation, and Modeling John Wiley & Sons, 1992
12