NUMEROS PSEUDOALEATOREOS

21
13/09/2015 1 GENERACION DE NUMEROS PSEUDOALEATORIOS Modelamiento y Simulación UNIVERSIDAD NACIONAL PEDRO RUIZ GALLO Facultad 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 para la generación de números pseudoaleatorios.

description

METODOS PARA GENERAR NUMEROS PSEUDOALEATOREOS

Transcript of NUMEROS PSEUDOALEATOREOS

Page 1: NUMEROS PSEUDOALEATOREOS

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.

Page 2: NUMEROS PSEUDOALEATOREOS

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

Page 3: NUMEROS PSEUDOALEATOREOS

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

Page 4: NUMEROS PSEUDOALEATOREOS

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.

Page 5: NUMEROS PSEUDOALEATOREOS

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.

Page 6: NUMEROS PSEUDOALEATOREOS

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

Page 7: NUMEROS PSEUDOALEATOREOS

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.

Page 8: NUMEROS PSEUDOALEATOREOS

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

Page 9: NUMEROS PSEUDOALEATOREOS

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)

Page 10: NUMEROS PSEUDOALEATOREOS

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

Page 11: NUMEROS PSEUDOALEATOREOS

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

Page 12: NUMEROS PSEUDOALEATOREOS

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.

Page 13: NUMEROS PSEUDOALEATOREOS

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

Page 14: NUMEROS PSEUDOALEATOREOS

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

Page 15: NUMEROS PSEUDOALEATOREOS

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

Page 16: NUMEROS PSEUDOALEATOREOS

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

Page 17: NUMEROS PSEUDOALEATOREOS

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

Page 18: NUMEROS PSEUDOALEATOREOS

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

Page 19: NUMEROS PSEUDOALEATOREOS

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

Page 20: NUMEROS PSEUDOALEATOREOS

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

Page 21: NUMEROS PSEUDOALEATOREOS

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