Post on 18-Sep-2015
description
GENERACION DE NUMEROS
UNIVERSIDAD NACIONAL PEDRO RUIZ GALLO
Facultad de Ingeniera Civil, Sistemas y Arquitectura
Escuela Profesional de Ingeniera de Sistemas
PSEUDOALEATORIOSModelamiento y Simulacin
Ing. Csar Augusto Guzmn ValleCiclo 2014-II
Objetivo de la sesin
Identificar los diferentes tipos de algoritmos para la generacin de nmeros pseudoaleatorios.
Mapa Conceptual del Curso
Modelado y
Simulacin
Simulacin
X Eventos
Proyectos
Simulacin
Colas en
Serie
Colas con
un servidor
InventariosSeries de
Nro. Aleato X EventosSimulacin Serie
Colas en
Paralelo
Nro. Aleato
Validacin
de Series
Generacin
de VA
Mapa Conceptual
Fenmenos Fsicos Procedimientos MatemticosTabla de Nros.
aleatorios
Xi+1=(aXi+c) mod m
NmerosAleatorios
Validacin deSeries de NA
VariablesU (0,1)
VariablesAleatorias
Nmeros aleatorios
1, 0 x 1f(x)
0, en otro caso
1
f(x)
0, x < 0
F(x) x, 0 x 1
1, x
Nmeros aleatorios
La probabilidad de observar un valor en un particular intervalo es independiente del valor previo observado.
Todo punto en el rango tiene igual probabilidad de Todo punto en el rango tiene igual probabilidad de ser elegido.
Si el intervalo (0,1) es dividido en n sub-intervalos de igual longitud, el nmero esperado de observaciones en cada intervalo es N/n. (N nmero de observaciones totales).
Caractersticas de un Generador de Nros Aleatorios
Rol preponderante en el proceso de simulacin. Para simular necesitamos de nmeros aleatorios como
semillas para generar muestras de V.A.
Caractersticas de un generador de nros aleatorios: 1) Muestrea valores de Distribucin Uniforme. 2) Asegura la NO Correlacin Serial.
Algunas Propiedades de Nros Aleatorios
1. Distribucin Uniforme.Cualquier nmero quepertenezca al rango de intersdebe tener la mismaprobabilidad de resultarprobabilidad de resultarsorteado.
2. NO Correlacin Serial.La aparicin de un nmero enla secuencia, no afecta laprobabilidad de que aparescaotro (o el mismo) nmero.
Ejemplo
La sucesin 1,2,3,4,5,1,2,3,4,5,1,2,3,4,5...es uniformeperoest correlacionada.est correlacionada.
Existen Tests que verifican las condiciones de uniformidad ycorrelacin serial, temas que veremos mas adelante.
Generador de nmeros aleatorios
El objetivo de cualquier esquema de generacin es producir una secuencia de nmeros entre 0 y 1 que simule las propiedades ideales de distribucin uniforme y de independencia.
Generar nmeros que sean aleatorios por si mismos
Nmeros pseudoaleatorios
Nmeros que se comportan de manera muy similar a nmeros aleatorios.
Casi todas las aplicaciones comerciales tienen estos nmeros pseudoaleatorios
Nmeros pseudo-aleatorios
Los nmeros aleatorios son calculados a partir de una semilla (seed) y una frmula.
El problema es que si el mtodo es conocido, entonces la secuencia de nmeros aleatorios puede entonces la secuencia de nmeros aleatorios puede ser replicada.
En la prctica ninguna funcin produce datos aleatorios verdaderos -- las funciones producen nmeros pseudo-aleatorios.
Propiedades deseables
1. Uniformemente distribuidos.
2. Estadsticamente independientes (no correlacin).
3. Periodo largo (sin repeticin).
4. Reproducibles y mutables.4. Reproducibles y mutables.
5. Sencillo en su implementacin.
6. Portabilidad.
7. Mtodo rpido de generacin.
8. Poca memoria para la generacin.
Para realizar una simulacin se requieren nmeros aleatorios en el intervalo (0,1), a os cuales se har referencia como ri, es decir, una secuencia ri = {r1 , r2 , r3 , r4 ,.., rn } que contiene n nmeros, todos ellos diferentes; n recibe el nombre de periodo o ciclo de vida.
Los r constituyen la parte medular de la simulacin de Los ri constituyen la parte medular de la simulacin de procesos estocsticos y generalmente se utilizan para generar variables aleatorias, tanto continuas como discretas.
Para simular el comportamiento de una o ms variables aleatorias es necesario contar con un conjunto suficientemente gran de ri , para tener al menos un periodo de vida. (n= 2
31
2200)
Porque manejar una gran cantidad de ri ?
Queremos simular el tiempo de atencin a clientes en un banco que tiene 5 cajeros en paralelo y cada uno atiende aprox. 50 clientes diarios. Para simular el tiempo de atencin se requiere un generador de variable aleatoria en funcin de r , por ejemplo Ti= variable aleatoria en funcin 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
Para bueno resultados en necesario realizar variasreplicas, corriendo cada una con nmerospseudoaleatorios diferentes.
Del ejemplo anterior en nueve replicas cuantos ri senecesitarias?
Por esto es necesario generar nmerospseudoaleatorios con algoritmos determinsticos.
Generar un conjunto de ri es una tarea relativamentesencilla; el lector puede generar su propio algoritmo; lodificil es:
Un conjunto de ri con periodo de vida suficientementegrande (N).grande (N).
Pase sin problemas las pruebas de uniformidad eindependencia, para evitar:
Que los nmeros no estn uniformemente distribuidos
Que los nmeros 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)
Tcnicas para generar nmeros aleatorios
La mayora de los mtodos (generadores)comienzan con un nmero inicial (semilla), a estenmero se le aplica un determinado procedimientoy as se encuentra el primer nmero random.
Usando este nmero como entrada, elprocedimiento es repetido para lograr un prximonmero random.
Y as siguiendo.
Algoritmos determinsticos para generacin de ri
Algoritmos no congruenciales Cuadrados medios
Productos medios
Multiplicador constante
Algoritmos congruenciales Algoritmos congruenciales Lineal
Congruencial lineal
Congruencial multiplicativo
Congruencial aditivo
No lineales
Algoritmos No Congruenciales
Algoritmo de cuadrados medios
1. Seleccionar una semilla X0 con D dgitos (D>3)2. Sea Y0 = resultado de elevar X0 al cuadrado; sea Xi =
los D dgitos del centro, y sea el ri = 0.D digitos delcentro.
3. Sea Yi = resultado de elevar Xi al cuadrado; sea Xi+1 =los D dgitos del centro, y sea el r = 0.D dgitos del
3. Sea Yi = resultado de elevar Xi al cuadrado; sea Xi+1 =los D dgitos del centro, y sea el ri = 0.D dgitos delcentro para toda i= 1,2,3,,n
4. Repetir este paso hasta obtener los n nmeros rideseados.
Nota: Si no es posible obtener los D dgitos del centro delnumero Yi, agregue ceros a la izquierda del numero Yi
Ejemplo
Generar los primeros 5 nmeros ri a partir de unasemilla X0 = 5735, de donde se puede observarD= 4 dgitos
Xi riXi ri
Y0=(5735)2 = 32890225 8902 0.8902
Y1=(8902)2 = 79245604 2456 0.2456
Y2=(2456)2 = 06031936 0319 0.0319
Y3=(0319)2 = 101761 0176 0.0176
Y4=(0176)2 = 030976 3097 0.3097
El algoritmo de cuadrados mediosgeneralmente es incapaz de generar unasecuencia de r con periodo de vida n grande.secuencia de ri con periodo de vida n grande.
Algoritmo de productos medios
1. Seleccionar una semilla X0 con D dgitos (D>3)
2. Seleccionar una semilla X1 con D dgitos (D>3)
3. Sea Y0 = X0 *X1 ; sea X2 = los D dgitos del centro, y sea ri = 0.D dgitos del centro.
4. Sea Y = X X sea X = los D dgitos del centro, y sea 4. Sea Yi = Xi *Xi+1 ; sea Xi+2 = los D dgitos del centro, y sea ri+1 = 0.D dgitos del centro para toda i= 1,2,3,,n
5. Repetir el paso 4 hasta obtener los n nmeros ri deseados.
Nota: Si no es posible obtener los D dgitos del centro del numero Yi, agregue ceros a la izquierda del numero Yi
Ejemplo
Generar los primeros 5 nmeros ri a partir de unasemilla X0 = 5015 y X1= 5734, de donde se puedeobservar D= 4 dgitos
Xi riXi ri
Y0=(5015)(5734)= 28756010 7560 0.7560
Y1=(5734)(7560)= 43349040 3490 0.3490
Y2=(7560)(3490)= 26384400 3844 0.3844
Y3=(3490)(3844)= 13415560 4155 0.4155
Y4=(3844)(4155)= 15971820 9718 0.9718
Algoritmo de Multiplicador constante
1. Seleccionar una semilla X0 con D dgitos (D>3)
2. Seleccionar una constante (a) con D dgitos (D>3)
3. Sea Y0 = X0 *a ; sea X1 = los D dgitos del centro, y sea ri = 0.D dgitos del centro.
4. Sea Y = X a sea X = los D dgitos del centro, y sea 4. Sea Yi = Xi *a ; sea Xi+1 = los D dgitos del centro, y sea ri+1 = 0.D dgitos del centro para toda i= 1,2,3,,n
5. Repetir el paso 4 hasta obtener los n nmeros ri deseados.
Nota: Si no es posible obtener los D dgitos del centro del numero Yi, agregue ceros a la izquierda del numero Yi
Ejemplo
Generar los primeros 5 nmeros ri a partir de unasemilla X0 = 9803 y con la constante a= 6965, dedonde se puede observar D= 4 dgitos
Xi riXi ri
Y0=(6965)(9803)= 68277895 2778 0.2778
Y1=(6965)(2778)= 19348770 3487 0.3487
Y2=(6965)(3487)= 24286955 2869 0.2869
Y3=(6965)(2869)= 19982585 9825 0.9825
Y4=(6965)(9825)= 68431125 4311 0.4311
Algoritmos Congruenciales
Algoritmo lineal
Este algoritmo es el mas usado, genera una serie de nmeros aleatorios mediante la siguiente ecuacin recursiva:
Xi =(a Xi + c) mod (m) i=0,1,2,,n
Donde: X es la semilla, a es la constante multiplicativa, c es unaDonde: Xo es la semilla, a es la constante multiplicativa, c es unaconstante aditiva y m es el mdulo; todos los valores deben sernmeros enteros.
Es importante sealar que la ecuacin genera una secuencia denmeros enteros y que para obtener nmeros pseudoaleatorios (0,1)se requiere la siguiente ecuacin:
ri = Xi / (m-1) i= 1,2,3,,n
Ejemplo
Generar 4 nmeros entre 0 y 1 con los siguientesparmetros X0 = 37, a= 19, c= 33 y m = 100
Xi riXi ri
X1=(19*37+33) mod 100= 36 36/99 0.3636
X2=(19*36+33) mod 100= 17 17/99 0.1717
X3=(19*17+33) mod 100= 56 56/99 0.5656
X4=(19*56+33) mod 100= 97 97/99 0.9797
Los valores de Xo, a, c, m deben cumplir ciertas condiciones no sertomados de forma arbitraria
m= 2g
a= 1 + 4k K debe ser entero c relativamente primo a m g debe ser entero g debe ser entero
Bajo estas condiciones se obtiene un periodo de vida mximo: N= m = 2g
Ejemplo: realizar un algoritmo donde se genere 64 nmeros pseudoaleatorios
Ejemplo
Generar nmeros entre 0 y 1 con los siguientes parmetros X0 = 6, k= 3, g= 3 y c= 7
N=?; N= 2g = 23 = 8
a=?; a= 1+ 4(k) = 1 + 4(3) = 13
X0=6X0=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 cuando c=0; mediante la siguiente ecuacin recursiva:
Xi =(a Xi + c) mod (m) i=0,1,2,,n
X =(a X ) mod (m) i=0,1,2,,nXi =(a Xi) mod (m) i=0,1,2,,n
Es importante sealar que la ecuacin genera una secuencia denmeros enteros y que para obtener nmeros pseudoaleatorios (0,1)se requiere la siguiente ecuacin:
ri = Xi / (m-1) i= 1,2,3,,n
Condiciones a cumplir
m= 2g
a= 3 + 8k o a= 5 + 8k
K= 0,1,2,3, K= 0,1,2,3,
Xo debe ser un numero impar
g debe ser entero
Bajo estas condiciones se obtiene un periodo de vida mximo: N= k/4 = 2g-2
Ejemplo
Generar nmeros entre 0 y 1 con los siguientes parmetros X0 = 17, k= 2, g= 5
a=?; a= 5+ 8(k) = 5 + 8(2) = 21
X0=17X0=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
Algoritmo Congruencial Aditivo
Este algoritmo requiere una secuencia previa de n numeroenteros Su ecuacin recursiva es:
Xi =(Xi-1 + Xi-n) mod (m) i=n+1,n+2,n+3,,N
Es importante sealar que la ecuacin genera una secuenciade nmeros enteros y que para obtener nmerospseudoaleatorios (0,1) se requiere la siguiente ecuacin:
ri = Xi / (m-1)
Ejemplo
Generar 7 nmeros entre 0 y 1 a partir de las siguiente secuencia de nmero
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
Algoritmo Congruencial Cuadrtico
Este algoritmo tiene la siguiente ecuacin recursiva:
Xi+1 =(aXi2 + bXi + c) mod (m) i=0,1,2,3,,N
Es importante sealar que la ecuacin genera unasecuencia de nmeros enteros y que para obtenernmeros pseudoaleatorios (0,1) se requiere la siguienteecuacin:
ri = Xi / (m-1)
Condiciones a cumplir
m= 2g
a debe ser un numero par
c debe ser un numero impar c debe ser un numero impar
g debe ser entero
(b-1)mod 4= 1
Bajo estas condiciones se obtiene un periodo de vida mximo: N= m
Ejemplo
Generar suficientes nmeros hasta alcanzar el periodo de vida, considerando
los parmetros Xo = 13, m = 8, a = 26, b = 27 y c = 27
X1= (26*132+27*13+27)mod8= 4
X = (26*4 +27*4+27)mod8= 7X2= (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
Algoritmo de Blum, blum y shub
Este algoritmo tiene la siguiente ecuacin recursiva, dondea=1, b=0, c=0
Xi+1 =(Xi 2) mod (m) i=0,1,2,3,,n
Es importante sealar que la ecuacin genera una secuenciade nmeros enteros y que para obtener nmerospseudoaleatorios (0,1) se requiere la siguiente ecuacin:
ri = Xi / (m-1)