Post on 07-Dec-2015
description
13/09/2015
1
GENERACION DE NUMEROSPSEUDOALEATORIOS
Modelamiento y Simulación
UNIVERSIDAD NACIONAL PEDRO RUIZ GALLOFacultad de Ingeniería Civil, Sistemas y Arquitectura
Escuela Profesional de Ingeniería de Sistemas
Ing. César Augusto Guzmán Valle
Objetivo de la sesión
Identificar los diferentes tipos de algoritmos parala generación de números pseudoaleatorios.
13/09/2015
2
Mapa Conceptual del Curso
Modelado ySimulación
SimulaciónX Eventos
ProyectosSimulación
Colas enSerie
Colas conun servidor
Colas enParalelo
InventariosSeries deNro. Aleato
Validaciónde Series
Generaciónde VA
Mapa Conceptual
Fenómenos Físicos ProcedimientosMatemáticos
NúmerosAleatorios
Validación deSeries de NA
VariablesU (0,1)
VariablesAleatorias
Tabla de Nros.aleatorios
Xi+1=(aXi+c) mod m
13/09/2015
3
Números aleatorios
0, x < 0
F(x) x, 0 x 1
1, x<1
1
F(x)
1
1, 0 x 1f(x)
0, en otro caso
1
f(x)
1
Números aleatorios
La probabilidad de observar un valor en unparticular intervalo es independiente del valorprevio observado.
Todo punto en el rango tiene igual probabilidadde ser elegido.
Si el intervalo (0,1) es dividido en n sub-intervalos de igual longitud, el número esperadode observaciones en cada intervalo es N/n. (Nnúmero de observaciones totales).
13/09/2015
4
Características de un Generador de NúmerosAleatorios
• Rol preponderante en el proceso de simulación.
• Para simular necesitamos de números aleatorioscomo semillas para generar muestras de V.A.
• Características de un generador de númerosaleatorios:
• 1) Muestrea valores de Distribución Uniforme.
• 2) Asegura la NO Correlación Serial.
Algunas Propiedades de NúmerosAleatorios
1. Distribución Uniforme.
Cualquier número quepertenezca al rango de interésdebe tener la mismaprobabilidad de resultarsorteado.
2. NO Correlación Serial.
La aparición de un número enla secuencia, no afecta laprobabilidad de que aparescaotro (o el mismo) número.
13/09/2015
5
Ejemplo
La sucesión 1,2,3,4,5,1,2,3,4,5,1,2,3,4,5...
es uniforme
pero
está correlacionada.
Existen Tests que verifican las condiciones deuniformidad y correlación serial, temas que veremosmas adelante.
Generador de números aleatorios
El objetivo de cualquier esquema de generaciónes producir una secuencia de números entre 0y 1 que simule las propiedades ideales dedistribución uniforme y de independencia.
13/09/2015
6
Generar números que sean aleatorios por si mismos
Números pseudoaleatorios
Números que se comportan de manera muysimilar a números aleatorios.
Casi todas las aplicaciones comerciales tienen estos números pseudoaleatorios
13/09/2015
7
Números pseudo-aleatorios
Los números aleatorios son calculados a partirde una semilla (seed) y una fórmula.
El problema es que si el método es conocido,entonces la secuencia de números aleatoriospuede ser replicada.
En la práctica ninguna función produce datosaleatorios verdaderos -- las funciones producennúmeros pseudo-aleatorios.
Propiedades deseables
1. Uniformemente distribuidos.2. Estadísticamente independientes (no
correlación).3. Periodo largo (sin repetición).4. Reproducibles y mutables.5. Sencillo en su implementación.6. Portabilidad.7. Método rápido de generación.8. Poca memoria para la generación.
13/09/2015
8
Para realizar una simulación se requieren números aleatoriosen el intervalo (0,1), a os cuales se hará referencia como ri, esdecir, una secuencia ri = {r1 , r2 , r3 , r4 ,….., rn } que contiene nnúmeros, todos ellos diferentes; n recibe el nombre deperiodo o ciclo de vida.
Los ri constituyen la parte medular de la simulación deprocesos estocásticos y generalmente se utilizan para generarvariables aleatorias, tanto continuas como discretas.
Para simular el comportamiento de una o más variablesaleatorias es necesario contar con un conjuntosuficientemente gran de ri , para tener al menos un periodo devida. (n= 231 2200)
¿Porque manejar una grancantidad de ri ? Queremos simular el tiempo de atención a clientes
en un banco que tiene 5 cajeros en paralelo ycada uno atiende aprox. 50 clientes diarios. Parasimular el tiempo de atención se requiere ungenerador de variable aleatoria en función de ri ,por ejemplo Ti= 5 + 2ri . Cuantos ri se necesitan?
Diario: 5 * 50 = 250
Semanal: 5 * 250 = 1250
Donde queda el tiempo que demora cada cliente en llegar….
Diario: 5 * 50 = 250
Semanal: 5 * 250 = 12502500ri
13/09/2015
9
Para bueno resultados en necesario realizarvarias replicas, corriendo cada una con númerospseudoaleatorios diferentes.
Del ejemplo anterior en nueve replicas cuantos rise necesitarias?
Por esto es necesario generar númerospseudoaleatorios con algoritmos determinísticos.
Generar un conjunto de ri es una tarea relativamentesencilla; el lector puede generar su propio algoritmo;lo dificil es: Un conjunto de ri con periodo de vida suficientemente
grande (N). Pase sin problemas las pruebas de uniformidad e
independencia, para evitar: Que los números no estén uniformemente distribuidos Que los números sean discretos en vez de continuos Que la media del conjunto sea muy alta o muy baja (1/2). Que la varianza del conjunto sea muy alta o muy baja (1/12)
13/09/2015
10
Técnicas para generar númerosaleatorios La mayoría de los métodos (generadores)
comienzan con un número inicial (semilla), aeste número se le aplica un determinadoprocedimiento y así se encuentra el primernúmero random.
Usando este número como entrada, elprocedimiento es repetido para lograr unpróximo número random.
Y así siguiendo.
Algoritmos determinísticos parageneración de ri
Algoritmos no congruencialesCuadrados medios Productos mediosMultiplicador constante
Algoritmos congruenciales Lineal Congruencial lineal Congruencial multiplicativo Congruencial aditivo
No lineales
13/09/2015
11
Algoritmos No Congruenciales
Algoritmo de cuadrados medios
1. Seleccionar una semilla X0 con D dígitos (D>3)2. Sea Y0 = resultado de elevar X0 al cuadrado; sea Xi =
los D dígitos del centro, y sea el ri = 0.D digitos delcentro.
3. Sea Yi = resultado de elevar Xi al cuadrado; sea Xi+1 =los D dígitos del centro, y sea el ri = 0.D dígitos delcentro para toda i= 1,2,3,…,n
4. Repetir este paso hasta obtener los n números rideseados.
Nota: Si no es posible obtener los D dígitos del centro delnumero Yi, agregue ceros a la izquierda del numero Yi
13/09/2015
12
Ejemplo
Generar los primeros 5 números ri a partir deuna semilla X0 = 5735, de donde se puedeobservar D= 4 dígitos
Xi riY0=(5735)2 = 32890225 8902 0.8902Y1=(8902)2 = 79245604 2456 0.2456Y2=(2456)2 = 06031936 0319 0.0319
Y3=(0319)2 = 101761 0176 0.0176Y4=(0176)2 = 030976 3097 0.3097
El algoritmo de cuadrados mediosgeneralmente es incapaz de generar unasecuencia de ri con periodo de vida ngrande.
13/09/2015
13
Algoritmo de productos medios
1. Seleccionar una semilla X0 con D dígitos (D>3)2. Seleccionar una semilla X1 con D dígitos (D>3)3. Sea Y0 = X0 *X1 ; sea X2 = los D dígitos del centro, y sea ri
= 0.D dígitos del centro.4. Sea Yi = Xi *Xi+1 ; sea Xi+2 = los D dígitos del centro, y sea
ri+1 = 0.D dígitos del centro para toda i= 1,2,3,…,n5. Repetir el paso 4 hasta obtener los n números ri
deseados.
Nota: Si no es posible obtener los D dígitos del centro delnumero Yi, agregue ceros a la izquierda del numero Yi
Ejemplo
Generar los primeros 5 números ri a partir deuna semilla X0 = 5015 y X1= 5734, de dondese puede observar D= 4 dígitos
Xi riY0=(5015)(5734)= 28756010 7560 0.7560Y1=(5734)(7560)= 43349040 3490 0.3490Y2=(7560)(3490)= 26384400 3844 0.3844Y3=(3490)(3844)= 13415560 4155 0.4155Y4=(3844)(4155)= 15971820 9718 0.9718
13/09/2015
14
Algoritmo de Multiplicador constante
1. Seleccionar una semilla X0 con D dígitos (D>3)2. Seleccionar una constante (a) con D dígitos (D>3)3. Sea Y0 = X0 *a ; sea X1 = los D dígitos del centro, y sea
ri = 0.D dígitos del centro.4. Sea Yi = Xi *a ; sea Xi+1 = los D dígitos del centro, y sea
ri+1 = 0.D dígitos del centro para toda i= 1,2,3,…,n5. Repetir el paso 4 hasta obtener los n números ri
deseados.
Nota: Si no es posible obtener los D dígitos del centrodel numero Yi, agregue ceros a la izquierda del numeroYi
Ejemplo
Generar los primeros 5 números ri a partir deuna semilla X0 = 9803 y con la constante a=6965, de donde se puede observar D= 4dígitos
Xi riY0=(6965)(9803)= 68277895 2778 0.2778Y1=(6965)(2778)= 19348770 3487 0.3487Y2=(6965)(3487)= 24286955 2869 0.2869Y3=(6965)(2869)= 19982585 9825 0.9825Y4=(6965)(9825)= 68431125 4311 0.4311
13/09/2015
15
Algoritmos Congruenciales
Algoritmo linealEste algoritmo es el mas usado, genera una serie de númerosaleatorios mediante la siguiente ecuación recursiva:
Xi =(a Xi + c) mod (m) i=0,1,2,…,n
Donde: Xo es la semilla, a es la constante multiplicativa, c esuna constante aditiva y m es el módulo; todos los valoresdeben ser números enteros.Es importante señalar que la ecuación genera una secuenciade números enteros y que para obtener númerospseudoaleatorios (0,1) se requiere la siguiente ecuación:
ri = Xi / (m-1) i= 1,2,3,…,n
13/09/2015
16
Ejemplo
Generar 4 números entre 0 y 1 con los siguientesparámetros X0 = 37, a= 19, c= 33 y m = 100
Xi riX1=(19*37+33) mod 100= 36 36/99 0.3636X2=(19*36+33) mod 100= 17 17/99 0.1717X3=(19*17+33) mod 100= 56 56/99 0.5656X4=(19*56+33) mod 100= 97 97/99 0.9797
Los valores de Xo, a, c, m deben cumplir ciertas condicionesno ser tomados de forma arbitraria
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 vidamáximo: N= m = 2g
Ejemplo: realizar un algoritmo donde se genere 64números pseudoaleatorios
13/09/2015
17
Ejemplo Generar números entre 0 y 1 con los siguientes parámetros X0 = 6, k= 3,
g= 3 y c = 7 N=?; N= 2g = 23 = 8 a=?; a= 1+ 4(k) = 1 + 4(3) = 13
X0=6
X1=(13*6+7) mod 8= 5 5/7 0.714
X2=(13*5+7) mod 8= 0 0/7 0.000
X3=(13*0+7) mod 8= 7 7/7 1.000
X4=(13*7+7) mod 8= 2 2/7 0.285
X5=(13*2+7) mod 8= 1 1/7 0.142
X6=(13*1+7) mod 8= 4 4/7 0.571
X7=(13*4+7) mod 8= 3 3/7 0.428
X8=(13*3+7) mod 8= 6 6/7 0.857
Algoritmo Congruencial Multiplicativo
Este algoritmo surge del algoritmo congruencial lineal cuandoc=0; mediante la siguiente ecuación recursiva:
Xi =(a Xi + c) mod (m) i=0,1,2,…,n
Xi =(a Xi) mod (m) i=0,1,2,…,n
Es importante señalar que la ecuación genera una secuencia denúmeros enteros y que para obtener números pseudoaleatorios(0,1) se requiere la siguiente ecuación:
ri = Xi / (m-1) i= 1,2,3,…,n
13/09/2015
18
Condiciones a cumplir m= 2g
a= 3 + 8k o a= 5 + 8k K= 0,1,2,3,… Xo debe ser un numero impar g debe ser entero
Bajo estas condiciones se obtiene un periodode vida máximo: N= k/4 = 2g-2
Ejemplo Generar números entre 0 y 1 con los siguientes parámetros X0 = 17, k= 2,
g= 5 a=?; a= 5+ 8(k) = 5 + 8(2) = 21
X0=17
X1=(21*17) mod 32= 5 5/31 0.1612
X2=(21*5) mod 32= 9 9/31 0.2903
X3=(21*9) mod 32= 29 29/31 0.9354
X4=(21*29) mod 32= 1 1/31 0.3225
X5=(21*1) mod 32= 21 21/31 0.6774
X6=(21*21) mod 32= 25 25/31 0.8064
X7=(21*25) mod 32= 13 13/31 0.4193
X8=(21*13) mod 32= 17 17/31 0.5483
13/09/2015
19
Algoritmo Congruencial Aditivo
Este algoritmo requiere una secuencia previa de nnumero enteros Su ecuación recursiva es:
Xi =(Xi-1 + Xi-n) mod (m) i=n+1,n+2,n+3,…,N
Es importante señalar que la ecuación genera unasecuencia de números enteros y que para obtenernúmeros pseudoaleatorios (0,1) se requiere la siguienteecuación:
ri = Xi / (m-1)
Ejemplo Generar 7 números entre 0 y 1 a partir de las siguiente secuencia de
número enteros: 65, 89, 98, 03, 69; m= 100 Para generar r1, r2, r3, r4, r5, r6, r7, antes es necesario generar x6, x7, x8, x9, x10,
x11, x12,
X6=(X5*X1) mod 100= (69+65)mod100= 34 34/99 0.3434
X7=(X6*X2) mod 100= (34+89)mod100= 23 23/99 0.2323
X8=(X7*X3) mod 100= (23+98)mod100= 21 21/99 02121
X9=(X8*X4) mod 100= (21+03)mod100= 24 24/99 0.2424
X10=(X9*X5) mod 100= (24+69)mod100= 93 93/99 0.9393
X11=(X10*X6) mod 100= (93+34)mod100= 27 27/99 0.2727
X12=(X11*X7) mod 100= (27+23)mod100= 50 50/99 0.5050
13/09/2015
20
Algoritmo Congruencial Cuadrático
Este algoritmo tiene la siguiente ecuación recursiva:
Xi+1 =(aXi2 + bXi + c) mod (m) i=0,1,2,3,…,N
Es importante señalar que la ecuación genera unasecuencia de números enteros y que para obtenernúmeros pseudoaleatorios (0,1) se requiere la siguienteecuación:
ri = Xi / (m-1)
Condiciones a cumplir m= 2g
a debe ser un numero par c debe ser un numero impar g debe ser entero (b-1)mod 4= 1
Bajo estas condiciones se obtiene un periodode vida máximo: N= m
13/09/2015
21
Ejemplo Generar suficientes números hasta alcanzar el periodo de vida,
considerando los parámetros Xo = 13, m = 8, a = 26, b = 27 y c = 27
X1= (26*132+27*13+27)mod8= 4
X2= (26*42+27*4+27)mod8= 7
X3= (26*72+27*7+27)mod8= 2
X4= (26*22+27*2+27)mod8= 1
X5= (26*12+27*1+27)mod8= 0
X6= (26*02+27*0+27)mod8= 3
X7= (26*32+27*3+27)mod8= 6
X8= (26*62+27*6+27)mod8= 5
X9= (26*52+27*5+27)mod8= 4