In [11]:
import numpy as np

def congrue_mixt(x, a, b, m):
    t = 0
    x0 = 0
    v=[]
    k=0
    while k<20:
        if (t == 0):
            x0 = x
        x = (a * x + b) % m
        u = (x/m) % 1
        v.append(u)

        print('valor x: ',x   ,' valor prob(x): ',u)
        t = t + 1
        k+=1
        

    promedio=0
    suma=0
    for i in v:
        suma+=i
    promedio=suma/len(v)
    print 'promedio: ',promedio

    xmedia=promedio
    sumatoria=0.0
    for xi in v:
        sumatoria=sumatoria+(xi-promedio)**2

    print 'sumatoria: ',sumatoria
    desv=np.sqrt((1.0/(len(v)-1.0))*(sumatoria))
    print 'desviacion estandar: ',desv
 
def main():
    x = 3.0 
    a = 5.0 
    b = 7.0 
    m = 29.0 
    congrue_mixt(x,a,b,m)
 
if __name__ == "__main__":
    main()


('valor x: ', 16.0, ' valor prob(x): ', 0.5517241379310345)
('valor x: ', 26.0, ' valor prob(x): ', 0.896551724137931)
('valor x: ', 27.0, ' valor prob(x): ', 0.9310344827586207)
('valor x: ', 1.0, ' valor prob(x): ', 0.034482758620689655)
('valor x: ', 10.0, ' valor prob(x): ', 0.3448275862068966)
('valor x: ', 8.0, ' valor prob(x): ', 0.27586206896551724)
('valor x: ', 2.0, ' valor prob(x): ', 0.06896551724137931)
('valor x: ', 13.0, ' valor prob(x): ', 0.4482758620689655)
('valor x: ', 17.0, ' valor prob(x): ', 0.5862068965517241)
('valor x: ', 0.0, ' valor prob(x): ', 0.0)
('valor x: ', 7.0, ' valor prob(x): ', 0.2413793103448276)
('valor x: ', 28.0, ' valor prob(x): ', 0.9655172413793104)
('valor x: ', 4.0, ' valor prob(x): ', 0.13793103448275862)
('valor x: ', 19.0, ' valor prob(x): ', 0.6551724137931034)
('valor x: ', 6.0, ' valor prob(x): ', 0.20689655172413793)
('valor x: ', 25.0, ' valor prob(x): ', 0.8620689655172413)
('valor x: ', 24.0, ' valor prob(x): ', 0.8275862068965517)
('valor x: ', 21.0, ' valor prob(x): ', 0.7241379310344828)
('valor x: ', 12.0, ' valor prob(x): ', 0.41379310344827586)
('valor x: ', 14.0, ' valor prob(x): ', 0.4827586206896552)
promedio:  0.48275862069
sumatoria:  1.89774078478
desviacion estandar:  0.3160397031

In [ ]: