Práctica 3: Generación de números pseudoaleatorios
1.1 Conceptos básicos de la teoría de probabilidad que se emplean en el modelos de simulación.
Evidencia: REPORTE del ejercicio, Generador pseudoaleatorio.
DESCRIPCIÓN
- Revisar la presentación vista en clase, GENERADORES PSEUDOALEATORIOS.
- GENERAR una tabla de números pseudoaleatorios utilizando el método CONGRUENCIAL MIXTO.
- CONSIDERE que los generadores lineales generan una secuencia de números pseudoaleatorios mediante una relación de recurrencia. Es decir, el próximo número pseudoaleatorio es determinado a partir del último número generado, es decir Xn+1 es derivado a partir de Xn.
- La relación de recurrencia es la siguiente: Xn+1 = (aXn+c) mod m, donde, X0 = la semilla (X >0), a = el multiplicador (a >0) , c = constante aditiva (c > O), m = el módulo (m >X, m >a y m >c).
0
0
- m también representa el intervalo de valores diferentes que pueden ser generados, Xn+1 = 0,1, 2,3,..., m-1.
- PRUEBAS:
- Asigne a las variables los siguientes valores a=5; X0= 4; c=7; m=8; pruebe con un periodo de 8, es decir, genere 8 valores), después genere periodos de 16 y 32. ¿Qué observa?¿Existe algún patrón en los resultados?¿Existe alguna relación entre el periodo y el valor de m?
- Asigne a las variables los siguientes valores a=7; X0= 7; c=7; m=10; pruebe con un periodo de 7, después genere periodos de 16 y 32. ¿Qué observa?¿Existe algún patrón en los resultados?¿Cada cuánto se repite el periodo y el valor de m?
- Asigne a las variables los siguientes valores a=81; X0= 5; c=89; m=100; pruebe con un periodo de 8, es decir, genere 8 valores), después genere periodos de 16 y 32. Compare los resultados para el cálculo con a=1; X0= 5; c=9; m=10; ¿Qué observa?¿Existe algún patrón en los resultados?¿Existe alguna relación de recurrencia?
Código
def rand(seed=lambda: math.floor(time.time()/10000000),a=1,c=2,m=1,period=None):
period = m if period == None else period
#Xn+1 = (aXn+c) mod m
x = lambda n: display((a*x(n-1)+c) % m if n != 0 else seed())
return x(period-2)
Prueba 1
Asigne a las variables los siguientes valores a=5; X0= 4; c=7; m=8; pruebe con un periodo de 8, es decir, genere 8 valores), después genere periodos de 16 y 32. ¿Qué observa?¿Existe algún patrón en los resultados?¿Existe alguna relación entre el periodo y el valor de m?
4,3,6,5,0,7,2,2
4,3,6,5,0,7,2,1,4,3,6,5,0,7,2,2
4,3,6,5,0,7,2,1,4,3,6,5,0,7,2,1,4,3,6,5,0,7,2,1,4,3,6,5,0,7,2,2
La secuencia que se repite es 4,3,6,5,0,7,2,2
, el mismo valor que valor de , por lo tanto, cada valores se repite la secuencia.
Prueba 2
a=7; X0= 7; c=7; m=10
periodo=7
7,6,9,0,7,6,6
periodo=16
7,6,9,0,7,6,9,0,7,6,9,0,7,6,9,9
periodo=32
7,6,9,0,7,6,9,0,7,6,9,0,7,6,9,0,7,6,9,0,7,6,9,0,7,6,9,0,7,6,9,9
La secuencia que se repite es 7,6,9,0
, por lo tanto, cada valores se repite la secuencia. Notesé que existe una alta sensibilidad con respecto al parámetro y .
Prueba 3
rand(seed=lambda: 5, a=81, c=89, m=100, period=8)
5,94,3,32,81,50,39,39rand(seed=lambda: 5, a=81, c=89, m=100, period=16)
5,94,3,32,81,50,39,48,77,26,95,84,93,22,71,71rand(seed=lambda: 5, a=81, c=89, m=100, period=32)
5,94,3,32,81,50,39,48,77,26,95,84,93,22,71,40,29,38,67,16,85,74,83,12,61,30,19,28,57rand(seed=lambda: 5, a=1, c=9, m=10, period=8)
5,4,3,2,1,0,9,9rand(seed=lambda: 5, a=1, c=9, m=10, period=16)
5,4,3,2,1,0,9,8,7,6,5,4,3,2,1,1rand(seed=lambda: 5, a=1, c=9, m=10, period=32)
5,4,3,2,1,0,9,8,7,6,5,4,3,2,1,0,9,8,7,6,5,4,3,2,1,0,9,8,7,6,5,5
La primera secuencia no somos capaces de encontrar, con el periodo actual, un patrón, pero es probable que la secuencia se repita tras 100 periodos debido a la sensibilidad con respecto a . En cambio en la segunda sí, 5,4,3,2,1,0,9,8,7,6
.
Conclusiones
En las computadoras y en particular con las famosas bibliotecas que generan aleatorios , estas funciones generan números pseudoaleatorios que al ser implementadas como Congruencia lineal, la repetición está condicionada a los parámetros y más en particular a los valores de y .
Referencias
- Coss B. Raul, “Simulación un enfoque práctico”, Editorial Limusa, S.A. de C.V., México, 2014.
- Murray R. Spiegel, et al, “Probabilidad y estadística”, 4ta. edición, McGraw Hill, México, 2013.
- Mendenhall William, et al, “Introducción a la probabilidad y estadística”, 14a. edición, CengageLearning editores, Méxco, 2015.
- Averill M. Law, “Simulation Modeling and analysis”, 5ta. edición, McGraw Hill, USA, 2015.