24
Números Pseudoaleatorios Son unos números generados por medio de una función (determinista, no aleatoria) y que aparentan ser aleatorios. ¿Por qué hay que recurrir a los números pseudoaleatorios? Fundamentalmente porque las sucesiones de números pseudoaleatorios son más rápidas de generar que las de números aleatorios.

Unidad 2 Numeros Pseudoaleatorios

  • Upload
    abisavi

  • View
    1.737

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Unidad 2 Numeros Pseudoaleatorios

Números Pseudoaleatorios

Son unos números generados por medio de una función (determinista, no aleatoria) y que aparentan ser aleatorios.

¿Por qué hay que recurrir a los números pseudoaleatorios?

Fundamentalmente porque las sucesiones de números pseudoaleatorios son más rápidas de generar que las de números aleatorios.

Page 2: Unidad 2 Numeros Pseudoaleatorios

Generación de números pseudoaleatorios

Algoritmos: Cuadrados medios Productos medios Multiplicador constante Lineal Congruencial multiplicativo Congruencial aditivo Congruencial no lineal

Page 3: Unidad 2 Numeros Pseudoaleatorios

Propiedades de los números pseudoaleatorios entre 0 y 1

Es deseable que las rutinas de generación tengan las siguientes cualidades:

1. Que sean rápidas2. Que necesiten poca memoria.3. Cíclicos (o de muy largo periodo)4. Deben poderse reproducir nuevamente los valores obtenidos5. Los números generados deben tener las propiedades estadísticas de uniformidad e independencia)

Page 4: Unidad 2 Numeros Pseudoaleatorios

Algoritmo de Cuadrados mediosDe acuerdo a las características deseables la técnica de Cuadrados Medios tiene los siguientes problemas:a). Las semillas con ceros producen valores particulares.b). Las semillas con múltiplos de 10 provocan que los aleatorios sean cero.c). Las semillas pequeñas producen aleatorios pequeños.

Pasos para generar:Pasos para generar:

1.- Seleccionar la semilla (X0) con D dígitos (D>3)2.- Sea X0 el resultado de elevar X0 y obtener X1 con los D dígitos del centro y sea ri=0.D del centro para toda i=1, 2, 3, …., n3.- Sea Yi el resultado de elevar al cuadrado Xi y obtener Xi+1 con los D dígitos del centro y sea ri=0.D del centro para toda i=1, 2, 3, …., n4.-Repetir el paso 3 hasta obtener los n números ri deseados.

Nota: si no es posible obtener los D dígitos del centro del número Yi, agregue ceros a la

izquierda del número Yi.

Page 5: Unidad 2 Numeros Pseudoaleatorios

Ejemplo:Generar los primeros 5 números ri a partir de una semilla X0=5735 de donde se puede observar que D=4 dígitos.

Y0= (5735)2 = 32890225 X1= 8902 

r1= 0.8902 

Y1= (8902)2 = 79245604 X2= 2456 

r2= 0.2456 

Y2= (2456)2 = 06031936 X3= 0319 

r3= 0.0319 

Y3= (0319)2 = 101761 X4= 0176 

r4= 0.0176 

Y4= (0176)2 = 030976 

X5= 3097 

r5= 0.3097 

Page 6: Unidad 2 Numeros Pseudoaleatorios

EjerciciosCalcule los 5 primeros aleatorios de 4 dígitos que se generan con las semillas:

X0=1234

X0=5227

X0=3456

X0=9876

X0=5678

Page 7: Unidad 2 Numeros Pseudoaleatorios

Algoritmo de Productos medios

Pasos para generar:Pasos para generar:

1.- Seleccionar la semilla (X0) con D dígitos (D>3)2.- Seleccionar la semilla (X1) con D dígitos (D>3)3.- Sea Y0 = X0 * X1 y el resultado sea X2 con los D dígitos del centro y sea ri=0.D del centro4.-Sea Yi = Xi * Xi+1 y el resultado sea Xi+2 con los D dígitos del centro y sea ri+1=0.D 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 del número Yi, agregue

ceros a la izquierda del número Yi.

Page 8: Unidad 2 Numeros Pseudoaleatorios

Ejemplo:Generar los primeros 5 números ri a partir de una semilla X0=5015 y X1=5734 de donde se puede observar que ambas semillas tienen D=4 dígitos.

Y0= (5015)(5734) = 28756010 X0 X1

X2= 7560 r1= 0.7560 

Y1= (5734)(7560) = 46349040 X1 X2 

X3= 3490 

r2= 0.3490 

Y2= (7560)(3490) = 26384400 X2 X3 

X4= 3844 

r3= 0.3844 

Y3= (3490)(3844) = 13415560 X3 X4 

X5= 4155 

r4= 0.4155 

Y4= (3844)(4155)= 15971820 X4 X5

X6= 9718 r5= 0.9718

Page 9: Unidad 2 Numeros Pseudoaleatorios

EjerciciosCalcule los 5 primeros aleatorios de 4 dígitos que se generan con las semillas:

X0=1234 y X1=3456

X0=9876 y X1=5678

X0=9803 y X1=6965

Page 10: Unidad 2 Numeros Pseudoaleatorios

Algoritmo de Multiplicador constante

Pasos para generar:Pasos para generar:

1.- Seleccionar la semilla (X0) con D dígitos (D>3)2.- Seleccionar una constante (a) con D dígitos (D>3)3.- Sea Y0 = a * X0 y el resultado sea X1 con los D dígitos del centro y sea ri=0.D del centro4.-Sea Yi = a * Xi y el resultado sea Xi+1 con los D dígitos del centro y sea ri+1=0.D 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 del número Yi, agregue

ceros a la izquierda del número Yi.

Page 11: Unidad 2 Numeros Pseudoaleatorios

Ejemplo:Generar los primeros 5 números ri a partir de una semilla X0=9803 y a=6965 de donde se puede observar que la semilla y la constante tienen D=4 dígitos.

Y0= (6965)(9803) = 68277895 a X0

X1= 2778 r1= 0.2778

Y1= (6965)(2778) = 19348770 a X1

X2= 3487 r2= 0.3487

Y2= (6965)(3487) = 24286955 a X2

X3= 2869 r3= 0.2869

Y3= (6965)(2869) = 19982585 a X3

X4= 9825 r4= 0.9825

Y4= (6965)(9825) = 68431125 a X4

X5= 4311 r5= 0.4311

Page 12: Unidad 2 Numeros Pseudoaleatorios

EjerciciosCalcule los 4 primeros aleatorios ocupe las semillas:

X0=5678, a=9876

X0=3456, a=1234

X0=5227, a=7656

Page 13: Unidad 2 Numeros Pseudoaleatorios

Algoritmo Lineal

Xi+1 =(aXi + c) mod m i=0,1,2,3,…,n

ri= Xi/m-1 i-1,2,3,…,n

X0 es la semilla m es el módulo (residuo)

a es la constante multiplicativa c es la constante aditiva

Para que el algoritmo sea capaz de lograr el máximo periodo de vida (n), es preciso que cumpla las siguientes condiciones:

m=2g

a =1 + 4kk debe ser enteroc relativamente primo a mg debe ser entero

Periodo de vida máximo N=m=2g

Page 14: Unidad 2 Numeros Pseudoaleatorios

Ejemplo:Generar suficientes números entre 0 y 1 con los parámetros X0=6, k=3, g=3 y c=7, hasta encontrar el periodo de vida máximo (N).

X1= (a*X0 + c) mod m =(13*6 +7) mod 8 = 5

X2= (a*X1 + c) mod m =(13*5 +7) mod 8 = 0

X3= (a*X2 + c) mod m =(13*0 + 7) mod 8 =7

X4= (a*X3 + c) mod m =(13*7 +7) mod 8 = 2

X5= (a*X4 + c) mod m =(13*2 +7) mod 8 = 1

X6= (a*X5 + c) mod m =(13*1 +7) mod 8 = 4

X7= (a*X6 + c) mod m =(13*4 +7) mod 8 = 3

X8= (a*X7 + c) mod m =(13*3 +7) mod 8 = 6

r1= 5 / 7 = 0.714

r2= 0 / 7 = 0.000

r3= 7 / 7 = 1.000

r4= 2 / 7 = 0.285

r5= 1 / 7 = 0.142

r6= 4 / 7 = 0.571

r7= 3 / 7 = 0.428

r8= 6 / 7 = 0.857

a = 1 +4 (3) = 13 m= 23 =8

Page 15: Unidad 2 Numeros Pseudoaleatorios

Ejercicios

X0=53, c=33, m=3, k=6

X0=17, c=7, a=21, g=4

Page 16: Unidad 2 Numeros Pseudoaleatorios

Algoritmo Congruencial multiplicativo

Xi+1 =(aXi) mod m i=0,1,2,3,…,n

ri= Xi/m-1

X0 es la semilla m es el módulo (residuo)

a es la constante multiplicativa

Para que el algoritmo sea capaz de lograr el máximo periodo de vida (n), es preciso que cumpla las siguientes condiciones:

m=2g

a =3 + 8k o a =5 + 8kk=0, 1, 2, 3,…X0 debe ser un número imparg debe ser entero

Periodo de vida máximo N=m/4=2g-2

Page 17: Unidad 2 Numeros Pseudoaleatorios

Ejemplo:

Generar suficientes números entre 0 y 1 con los parámetros X0=17, k=2 y g=5, hasta encontrar el periodo de vida máximo (N).

a = 5 + 8(2) = 21 m= 25 =32

X1= (a*X0) mod m =(21*17) mod 32 = 5 r1= 5/31 = 0.1612

X2= (a*X1) mod m =(21* 5) mod 32 = 9 r2= 9/31 = 0.2903

X3= (a*X2) mod m =(21* 9) mod 32 = 29 r3= 29/31 = 0.9354

X4= (a*X3) mod m =(21*29) mod 32 = 1 r4= 1/31 = 0.3225

X5= (a*X4) mod m =(21* 1) mod 32 = 21 r5= 21/31 = 0.6774

X6= (a*X5) mod m =(21*21) mod 32 = 25 r6= 25/31 = 0.8064

X7= (a*X6) mod m =(21*25) mod 32 = 13 r7= 13/31 = 0.4193

X8= (a*X7) mod m =(21*13) mod 32 = 17 r8= 17/31 = 0.5483

Page 18: Unidad 2 Numeros Pseudoaleatorios

Ejercicios

X0=15, g=5, k=6

X0=13, k=2, g=5

Page 19: Unidad 2 Numeros Pseudoaleatorios

Algoritmo Congruencial aditivo

Xi =(Xi-1+Xi-n) mod m i=n+1,n+2,n+3,…,N

ri= Xi/m-1

Requiere una secuencia previa de n números enteros X1,X2,X3,X4,

…Xn para generar una nueva secuencia de números enteros que

empieza en Xn+1, Xn+2, Xn+3, Xn+4,…

Page 20: Unidad 2 Numeros Pseudoaleatorios

Ejemplo:Generar 7 números pseudoaleatorios entre 0 y 1 a partir de la siguiente secuencia de números enteros: X1=65, X2=89, X3=98, X4=03, X5=69; m=100. Para generar r1, r2, r3, r4, r5, r6 y r7 antes es necesario generar X6, X7, X8, X9, X10, X11, X12.

i=6 (es la siguiente iteración) n=5 (es el número de x´s de la serie)

X6 = (X5+X1) mod m =(69+65) mod 100 = 34 r1=34/99 = 0.3434

X7 = (X6+X2) mod m =(34+89) mod 100 = 23 r2=23/99 = 0.2323

X8 = (X7+X3) mod m =(23+98) mod 100 = 21 r3=21/99 = 0.2121

X9 = (X8+X4) mod m =(21+03) mod 100 = 24 r4=24/99 = 0.2424

X10= (X9+X5) mod m =(24+69) mod 100 = 93 r5=93/99 = 0.9393

X11= (X10+X6) mod m =(93+34) mod 100 = 27 r6=27/99 = 0.2727

X12= (X11+X7) mod m =(27+23) mod 100 = 50 r7=50/99 = 0.5050

Page 21: Unidad 2 Numeros Pseudoaleatorios

EjerciciosGenerar 7 números pseudoaleatorios entre 0 y 1 a partir de las siguientes series:

X1=35, X2=26, X3=39, X4=43, X5=52; m=100

X1=98, X2=76, X3=23, X4=13, X5=17; m=777

Page 22: Unidad 2 Numeros Pseudoaleatorios

Algoritmo Congruencial no lineal (cuadrático)

Xi+1 =(aXi2 + bXi + c) mod m i=0,1,2,3,…,N

ri= Xi/m-1

m es el módulo (residuo)

Para que el algoritmo sea capaz de lograr el máximo periodo de vida (n), es preciso que cumpla las siguientes condiciones:

m=2g

a debe ser un número parc debe ser un número imparg debe ser entero(b-1) mod 4 =1

Periodo de vida máximo N=m

Page 23: Unidad 2 Numeros Pseudoaleatorios

Ejemplo:

Generar suficientes números entre 0 y 1 con los parámetros X0=13, m=8, a=26, b=27 y c=27, hasta encontrar el periodo de vida máximo N=m=8.

X1= (aX02+bX0+c) mod m =(26*132 + 27*13 + 27) mod 8 = 4 r1= 4/7 = 0.5714

X2= (aX12+bX1+c) mod m =(26* 42 + 27* 4 + 27) mod 8 = 7 r2= 7/7 = 1.0000

X3= (aX22+bX2+c) mod m =(26* 72 + 27* 7 + 27) mod 8 = 2 r3= 2/7 = 0.2857

X4= (aX32+bX3+c) mod m =(26* 22 + 27* 2 + 27) mod 8 = 1 r4= 1/7 = 0.1428

X5= (aX42+bX4+c) mod m =(26* 12 + 27* 1 + 27) mod 8 = 0 r5= 0/7 = 0.0000

X6= (aX52+bX5+c) mod m =(26* 02 + 27* 0 + 27) mod 8 = 3 r6= 3/7 = 0.4285

X7= (aX62+bX6+c) mod m =(26* 32 + 27* 3 + 27) mod 8 = 6 r7= 6/7 = 0.8571

X8= (aX72+bX7+c) mod m =(26* 62 + 27* 6 + 27) mod 8 = 5 r8= 5/7 = 0.7142

X9= (aX82+bX8+c) mod m =(26* 52 + 27* 5 + 27) mod 8 = 4 r9= 4/7 = 0.5714

Page 24: Unidad 2 Numeros Pseudoaleatorios

EjerciciosGenerar números pseudoaleatorios entre 0 y 1 a partir de:

X0=65, a=86, b=22, c=17 y m=8

X0=93, a=34, b=30, c=27 y g=3