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()
In [ ]:
In [ ]: