In [41]:
%matplotlib inline
import matplotlib.pyplot as plt
import time
import math
def random(n):
    
    lastXn = int(time.clock())+7897857
    a = lastXn*8
    b = a + 98756465
    m = 900217+int(time.clock())
    rList = []
    for i in range(n):
        
        Xn = float((a*lastXn + b)% m)
        lastXn = Xn
        random = float(Xn/m)
        rList.append(random)
    return rList

def genVAD(n, x, px):
    
    dAcum = distAcum (x,px)
    rList = random(n)
    xList = []
    for i in rList:
        for j in range(len(dAcum)):
            if(i <= dAcum[j]):
                xList.append(x[j])
                break
    #print "Generated numbers: "
    #plt.hist(xList)
    #print xList
    return xList
    
      
def distAcum(x, px):
    
    Px = []
    suma = 0
    for i in range(len(x)):
        Px.append(suma + px[i])
        suma = suma + px[i]
    return Px

def valorEsperado(x,px):
    esperanza = 0
    for i in range(len(x)):
        esperanza += float(x[i]*px[i])
    print 'Valor esperado: ', esperanza
    
def sumaDados():
    
    x8 = [1, 2, 3, 4, 5, 6, 7, 8]
    px8 = [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125]
    x13 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
    px13 = [0.076923, 0.076923, 0.076923, 0.076923, 0.076923, 0.076923, 0.076923, 0.076923, 0.076923, 0.076923, 
            0.076923, 0.076923, 0.076923]
    x8List = genVAD(5000, x8, px8)
    x13List = genVAD(5000, x13, px13)
    xList = []
    for i in range(5000):
        xList.append(x8List[i] + x13List[i])
    #print "Suma de los dados."
    #print xList
    
    #Impresion del histograma
    plt.hist(xList)
    
    #Ahora obtenemos los parametros de la nueva variable aleatoria:
    x21 = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
    px21 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
    for i in xList:
        for j in range(len(x21)):
            if(i==x21[j]):
                px21[j] += 1
    print "Variable aleatoria: suma de dados"  
    print "x = ",x21
    print ""
    for i in range(len(px21)):
        px21[i] = float(px21[i])/5000
    print "px = ",px21
    print ""
    Px = distAcum(x21, px21)
    print "Px = ",Px
    print ""
    valorEsperado(x21, px21)
def main():
    sumaDados()

main()


Variable aleatoria: suma de dados
x =  [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]

px =  [0.0738, 0.0488, 0.0312, 0.0802, 0.018, 0.0562, 0.0684, 0.0094, 0.069, 0.0384, 0.038, 0.0812, 0.012, 0.066, 0.0634, 0.0212, 0.0718, 0.027, 0.0476, 0.0784]

Px =  [0.0738, 0.12260000000000001, 0.15380000000000002, 0.234, 0.252, 0.30820000000000003, 0.37660000000000005, 0.38600000000000007, 0.45500000000000007, 0.49340000000000006, 0.5314000000000001, 0.6126, 0.6246, 0.6906000000000001, 0.7540000000000001, 0.7752000000000001, 0.8470000000000001, 0.8740000000000001, 0.9216000000000001, 1.0]

Valor esperado:  11.5136

In [ ]:


In [ ]: