Anda di halaman 1dari 22

Universidad Nacional de Ingeniería

Facultad de
Ingeniería de Sistemas e Industrial

Simulación de Sistemas

Mg(c). César Pacheco Vera


cesarpacheco17@gmail.com
Contenido
1. Números aleatorias
2. Generadores de números aleatorios
Objetivos

1. Entender que es un número


aleatorio
2. Generar números aleatorios.
3. Aplicarlos a diferentes casos.
2.4. Generadores Congruenciales Mixtos

a. Selección del Modulo


Por los motivos expuestos anteriormente,
aparentemente m = 2b es una buena elección
para el módulo. Donde b es el número de bits
de la palabra binaria en la memoria el
ordenador (descontando el bit de signo).

Por ejemplo, si el ordenador almacena los


datos en palabras de 32 bits, y el más
significativo se reserva para el signo,
entonces: b = 31  m = 231
b. Selección del Multiplicador
El multiplicador tiene la forma de:

a = 2k + 1 donde kZ+ es un entero


positivo.
Con esta elección, para que el generador
mixto sea de periodo completo, a debe
satisfacer las dos condiciones siguientes:

 Ser impar
 (a−1) debe ser divisible por q y 4
(Condiciones 2 y 3 del Teorema)

Ejemplo. Se pretende aplicar el generador


con c=7, a= 5 con 𝑧0 = 6 en una PC
“prehistorica” de 4 bits/palabra (sin
considerar el bit de signo). Hallar los
respectivos números aleatorios.
Existen algunos generadores mixtos de
probado buen comportamiento.

 Zi=(515.Zi-1+1)mod 235

 Zi=(314159269.Zi-1+453806245)mod 231
Existen algunos generadores mixtos de
probado buen comportamiento.

 Zi=(515.Zi-1+1)mod 235

 Zi=(314159269.Zi-1+453806245)mod 231
Aplicaciones

Caso 1. Obtenga una secuencia de 20 números


pseudo aleatorios a partir del generador
siguiente: a = 17, c=43 y m = 64. Emplee
como semilla: z0 = 13.
Caso 2. Usando el método congruencial
multiplicativo, calcule el periodo del
generador definido por los siguientes
parámetros: a = 13, m = 26 = 64, para los
siguientes 4 valores de la semilla: z0= 1, 2,
3 y 4. (tarea n°5)
2.5. Generadores congruenciales
lineales multiplicativos
La gran ventaja de los generadores
multiplicativos es su sencillez, ya que el
valor de c queda fijado por definición: c=0.
Aparentemente, su desventaja es que no
tienen periodo completo, ya que no
satisfacen la condición 1 del Teorema 1.

Sin embargo, en la practica esta desventaja


no supone ninguna limitación, ya que
escogiendo m y a adecuadamente puede
conseguirse un periodo de longitud m−1. Las
condiciones que deben satisfacerse en esta
elección son las enunciadas en el Teorema 2.
Teorema 2. El periodo del generador
congruencial lineal multiplicativo es igual
a m − 1 si se cumplen las dos condiciones
siguientes:

 Condición 1. El módulo, m, es un número


entero primo. Por ejemplo, igual al mayor
número primo que sea menor que 2b.

 Condición 2. El multiplicador, a, es una


raíz primitiva de m. Es decir, el número
entero más pequeño, k, para el cual ak−1 es
divisible por m es: k = m − 1.
2.6. Generador Congruencial Cuadrático

Los generadores congruenciales lineales pueden


considerarse un caso particular de un
tipo más general de generadores, definidos
mediante expresiones del tipo:

𝒛𝒊 = 𝑔 𝒛𝒊−𝟏 , 𝒛𝒊−𝟐 , … 𝑚𝑜𝑑 𝒎


donde g es una función determinista. Como en el
caso del generador lineal, los números obtenidos
mediante esta fórmula son enteros comprendidos
entre 0 y m− 1. A partir de ellos, se obtienen
números distribuidos en el intervalo [0, 1)
mediante la transformación: 𝑍𝑖
𝒖𝒊 = 𝑚−1
Los generadores congruenciales cuadráticos
son una generalización obvia de los
generadores lineales. Poseen la fórmula
generatriz siguiente:

2
𝑔 𝒛𝒊−𝟏 , 𝒛𝒊−𝟐 , … = 𝑎´𝑧𝑖−1 + 𝑎𝑧𝑖−1 + 𝑐

Puesto que 𝑧𝑖 sólo depende de 𝑧𝑖−1 (y no de


números anteriores),y dado que 0 ≤ 𝑧𝑖 ≤ 𝑚 − 1,
en consecuencia el periodo de un generador
congruencial cuadrático es a lo sumo m.
Ejemplo. Considerando a´=7, a=9, 𝑧0 = 5 , y
c=3 con m=16. Hallar los respectivos número
aleatorios.

a. Aplique el generador congruencial


cuadrático.
b. Que pasaría si ahora 𝑧0 = 9 . Indique los
números aleatorios generados.
2.7. Generador de números aleatorios
de Promodel
El generador de números aleatorios instalado
en la versión 7.0 y posteriores de Promodel
es del tipo denominado “generadores
recursivos combinados múltiples”. Tiene un
ciclo de longitud 3.1x1057. Para iniciar la
recursión, hace falta una semilla, que es un
vector de 6 componentes: {A0,A1,A2,B0,B1,B2}.
Opera de la siguiente manera:
1. Comienza con las siguientes dos fórmulas
recursivas separadas, que puede
considerarse que son operadas en
paralelo:

An=(1403580·An−2−810728·An−3)mod 4294967087
Bn=(527612·Bn−1−1370589·Bn−3)mod 4294944443

2. A continuación, se combinan los dos


valores obtenidos anteriormente de la
siguiente forma:

Zn = (An − Bn) mod 4294967087


3. Finalmente, se calcula el número seudo
aleatorio como sigue:
𝑧𝑛
𝑠𝑖 𝑧𝑛 > 0
4294967088
𝑢𝑛 =
4294967087 𝑠𝑖 𝑧𝑛 = 0
4294967088
Resulta útil separar el ciclo del generador
en secuencias adyacentes, no solapadas. Para
definir estas secuencias es necesario
definir vectores semilla lo suficientemente
espaciados entre sí. El generador de Arena
permite, de forma sencilla, separar su
ciclo, de 3.1 x 1057 números, en 1.8x1019
secuencias, cada una de ellas de longitud
1.7 x 1038.

Cada una de estas secuencias es, a su vez,


dividida en 2.3 x 1015 sub-secuencias, cada
una de ellas con una longitud 7.6 x 1022.
Como ilustración de lo inmensa que es la
longitud de cada una de estas sub-
secuencias, basta considerar que una PC a
600 MHz tardaría 1.8 billones de años en
agotar la sub-secuencia, realizando
únicamente la operación de generar el número
seudo aleatorio.
En Promodel, cuando se generan observaciones
a partir de una distribución, puede
especificarse qué secuencia de números
aleatorios se desea emplear para ello. La
forma de hacerlo consiste en añadir el
número de secuencia a continuación de los
parámetros de la distribución.
Por ejemplo, para generar observaciones de
una distribución exponencial con media 6.7,
usando la secuencia 4, debe escribirse:
EXPO(6.7, 4).

Si no se especifica el número de la
secuencia, por defecto Arena usa la número
10. Asimismo, Promodel usa la secuencia 10
para generar los números aleatorios
necesarios para los procesos de llegada no
estacionarios o los módulos Decide. Por este
motivo, cuando el usuario escoge una
secuencia, conviene que no sea la número 10.

Anda mungkin juga menyukai