Generacion de numeros Aleatorios

42
GENERACION DE NUMEROS UNIVERSIDAD NACIONAL PEDRO RUIZ GALLO Facultad de Ingeniería Civil, Sistemas y Arquitectura Escuela Profesional de Ingeniería de Sistemas PSEUDOALEATORIOS Modelamiento y Simulación Ing. César Augusto Guzmán Valle Ciclo 2014-II

description

modelamiento y simulacion de numeros aleatorios

Transcript of Generacion de numeros Aleatorios

  • 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)