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

  1. Revisar la presentación vista en clase, GENERADORES PSEUDOALEATORIOS.
  1. GENERAR una tabla de números pseudoaleatorios utilizando el método CONGRUENCIAL MIXTO.
  1. 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.
  1. 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

  1. m también representa el intervalo de valores diferentes que pueden ser generados, Xn+1 = 0,1, 2,3,..., m-1.
  1. PRUEBAS:
  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?
  1. 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?
  1. 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 mm, por lo tanto, cada periodo/mperiodo/m 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 periodo/mperiodo/m valores se repite la secuencia. Notesé que existe una alta sensibilidad con respecto al parámetro aa y mm.

Prueba 3

rand(seed=lambda: 5, a=81, c=89, m=100, period=8)
5,94,3,32,81,50,39,39

rand(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,71

rand(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,57

rand(seed=lambda: 5, a=1, c=9, m=10, period=8)

5,4,3,2,1,0,9,9

rand(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,1

rand(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 mm. 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 randrand, 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 mm y aa.

Referencias

  1. Coss B. Raul, “Simulación un enfoque práctico”, Editorial Limusa, S.A. de C.V., México, 2014.
  1. Murray R. Spiegel, et al, “Probabilidad y estadística”, 4ta. edición, McGraw Hill, México, 2013.
  1. Mendenhall William, et al, “Introducción a la probabilidad y estadística”, 14a. edición, CengageLearning editores, Méxco, 2015.
  1. Averill M. Law, “Simulation Modeling and analysis”, 5ta. edición, McGraw Hill, USA, 2015.
  1. https://rubenfcasal.github.io/simbook