fork download
  1. # convolution of two pmf, starting at zero
  2. def conv(p1, p2):
  3. n1 = len(p1)
  4. n2 = len(p2)
  5. res = [0] * (n1+n2-1)
  6. for i in range(0, len(res)):
  7. ac = 0
  8. for j1 in range(0,len(p1)):
  9. j2 = i - j1
  10. if j2 >=0 and j2 < len(p2):
  11. ac += p2[j2] * p1[j1]
  12. res[i] = ac
  13. return res
  14.  
  15. p6 = [5/6.0, 1/6.0]
  16. p8 = [5/8.0, 2/8.0, 1/8.0]
  17. p10 = [5/10.0, 2/10.0, 2/10.0, 1/10.0]
  18. p12 = [5/12.0, 2/12.0, 2/12.0, 2/12.0, 1/12.0]
  19.  
  20. def compute(k6,k8,k10,k12):
  21. global p6,p8,p10, p12
  22. p = [1]
  23. for _ in range(0, k6):
  24. p = conv(p,p6)
  25. for _ in range(0, k8):
  26. p = conv(p,p8)
  27. for _ in range(0, k10):
  28. p = conv(p,p10)
  29. for _ in range(0, k12):
  30. p = conv(p,p12)
  31. return p
  32.  
  33. def probgt(p, n):
  34. return sum ( p[n:])
  35.  
  36. p = compute(5,7,11,13)
  37. prob = probgt(p,30)
  38. print(prob)
  39.  
Success #stdin #stdout 0.03s 9108KB
stdin
Standard input is empty
stdout
0.6195187559065025