In [1]:
import numpy as np
import matplotlib.pyplot as plt

In [84]:
probs = np.array([0.91, 0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.6])
probs = np.array([0.88, 0.88, 0.88, 0.88, 0.88, 0.88, 0.88, 0.95])

def pick8(probs):
    compliment = 1 - probs
    #Probability of getting exactly 8 successes
    p8 = np.prod(probs)
    #Probability of getting exactly 7 successes
    p7 = 0.0
    for i, p in enumerate(probs):
        prob = np.ma.array(probs, mask=False)
        prob.mask[i] = True
        p7 = p7 + prob.prod()*compliment[i]
    #Probability of Getting Exactly 6 Successes
    p6 = 0.0
    for i in np.arange(8):
        for j in np.arange(i+1,8):
            prob = np.ma.array(probs, mask=False)
            prob.mask[i] = True
            prob.mask[j] = True
            p6 = p6 + prob.prod()*compliment[i]*compliment[j]
    #Probability of Getting Exactly 5 Successes
    p5 = 0.0
    for i in np.arange(8):
        for j in np.arange(i+1, 8):
            for k in np.arange(j+1, 8):
                prob = np.ma.array(probs, mask=False)
                prob.mask[i] = True
                prob.mask[j] = True
                prob.mask[k] = True
                print prob
                p5 = p5 + prob.prod()*compliment[i]*compliment[j]*compliment[k]
    #Probability of Getting Exactly 4 Successes
    p4 = 0.0
    for i in np.arange(8):
        for j in np.arange(i+1, 8):
            for k in np.arange(j+1, 8):
                for l in np.arange(k+1, 8):
                    prob = np.ma.array(probs, mask=False)
                    prob.mask[i] = True
                    prob.mask[j] = True
                    prob.mask[k] = True
                    prob.mask[l] = True
                    p4 = p4 + prob.prod()*compliment[i]*compliment[j]*compliment[k]*compliment[l]
    #Probability of Getting Exactly 3 Successes
    p3 = 0.0
    for i in np.arange(8):
        for j in np.arange(i+1, 8):
            for k in np.arange(j+1, 8):
                prob = np.ma.array(compliment, mask=False)
                prob.mask[i] = True
                prob.mask[j] = True
                prob.mask[k] = True
                p3 = p3 + prob.prod()*probs[i]*probs[j]*probs[k]
    #Probability of Getting Exactly 2 Successes
    p2 = 0.0
    for i in np.arange(8):
        for j in np.arange(i+1,8):
            prob = np.ma.array(compliment, mask=False)
            prob.mask[i] = True
            prob.mask[j] = True
            p2 = p2 + prob.prod()*probs[i]*probs[j]
    p1 = 0.0
    for i, p in enumerate(probs):
        prob = np.ma.array(compliment, mask=False)
        prob.mask[i] = True
        p1 = p1 + prob.prod()*probs[i]    
    
    p0 = compliment.prod()
    print """
Star Acquisition Probability Table:
----------------------------------------------
Exactly Acquiring:              At Least Acquiring (8 or 7 or ...):
8 Stars  : {0:.5e}              8 Stars  : {9:.8}
7 Stars  : {1:.5e}              7 Stars  : {10:.8}
6 Stars  : {2:.5e}              6 Stars  : {11:.8}
5 Stars  : {3:.5e}              5 Stars  : {12:.8}
4 Stars  : {4:.5e}              4 Stars  : {13:.8}
3 Stars  : {5:.5e}              3 Stars  : {14:.8}
2 Stars  : {6:.5e}              2 Stars  : {15:.8}
1 Stars  : {7:.5e}              1 Stars  : {16:.8}

Probability of Acquiring Exactly Zero Stars:
----------------------------------------------
0 Stars  : {8:.5}
""".format(p8, p7, p6, p5, p4, p3, p2, p1, p0,
               p8,
               p8+p7, 
               p8+p7+p6, 
               p8+p7+p6+p5,
               p8+p7+p6+p5+p4,
               p8+p7+p6+p5+p4+p3,
               p8+p7+p6+p5+p4+p3+p2,
               p8+p7+p6+p5+p4+p3+p2+p1)
    
pick8(probs)


[-- -- -- 0.88 0.88 0.88 0.88 0.95]
[-- -- 0.88 -- 0.88 0.88 0.88 0.95]
[-- -- 0.88 0.88 -- 0.88 0.88 0.95]
[-- -- 0.88 0.88 0.88 -- 0.88 0.95]
[-- -- 0.88 0.88 0.88 0.88 -- 0.95]
[-- -- 0.88 0.88 0.88 0.88 0.88 --]
[-- 0.88 -- -- 0.88 0.88 0.88 0.95]
[-- 0.88 -- 0.88 -- 0.88 0.88 0.95]
[-- 0.88 -- 0.88 0.88 -- 0.88 0.95]
[-- 0.88 -- 0.88 0.88 0.88 -- 0.95]
[-- 0.88 -- 0.88 0.88 0.88 0.88 --]
[-- 0.88 0.88 -- -- 0.88 0.88 0.95]
[-- 0.88 0.88 -- 0.88 -- 0.88 0.95]
[-- 0.88 0.88 -- 0.88 0.88 -- 0.95]
[-- 0.88 0.88 -- 0.88 0.88 0.88 --]
[-- 0.88 0.88 0.88 -- -- 0.88 0.95]
[-- 0.88 0.88 0.88 -- 0.88 -- 0.95]
[-- 0.88 0.88 0.88 -- 0.88 0.88 --]
[-- 0.88 0.88 0.88 0.88 -- -- 0.95]
[-- 0.88 0.88 0.88 0.88 -- 0.88 --]
[-- 0.88 0.88 0.88 0.88 0.88 -- --]
[0.88 -- -- -- 0.88 0.88 0.88 0.95]
[0.88 -- -- 0.88 -- 0.88 0.88 0.95]
[0.88 -- -- 0.88 0.88 -- 0.88 0.95]
[0.88 -- -- 0.88 0.88 0.88 -- 0.95]
[0.88 -- -- 0.88 0.88 0.88 0.88 --]
[0.88 -- 0.88 -- -- 0.88 0.88 0.95]
[0.88 -- 0.88 -- 0.88 -- 0.88 0.95]
[0.88 -- 0.88 -- 0.88 0.88 -- 0.95]
[0.88 -- 0.88 -- 0.88 0.88 0.88 --]
[0.88 -- 0.88 0.88 -- -- 0.88 0.95]
[0.88 -- 0.88 0.88 -- 0.88 -- 0.95]
[0.88 -- 0.88 0.88 -- 0.88 0.88 --]
[0.88 -- 0.88 0.88 0.88 -- -- 0.95]
[0.88 -- 0.88 0.88 0.88 -- 0.88 --]
[0.88 -- 0.88 0.88 0.88 0.88 -- --]
[0.88 0.88 -- -- -- 0.88 0.88 0.95]
[0.88 0.88 -- -- 0.88 -- 0.88 0.95]
[0.88 0.88 -- -- 0.88 0.88 -- 0.95]
[0.88 0.88 -- -- 0.88 0.88 0.88 --]
[0.88 0.88 -- 0.88 -- -- 0.88 0.95]
[0.88 0.88 -- 0.88 -- 0.88 -- 0.95]
[0.88 0.88 -- 0.88 -- 0.88 0.88 --]
[0.88 0.88 -- 0.88 0.88 -- -- 0.95]
[0.88 0.88 -- 0.88 0.88 -- 0.88 --]
[0.88 0.88 -- 0.88 0.88 0.88 -- --]
[0.88 0.88 0.88 -- -- -- 0.88 0.95]
[0.88 0.88 0.88 -- -- 0.88 -- 0.95]
[0.88 0.88 0.88 -- -- 0.88 0.88 --]
[0.88 0.88 0.88 -- 0.88 -- -- 0.95]
[0.88 0.88 0.88 -- 0.88 -- 0.88 --]
[0.88 0.88 0.88 -- 0.88 0.88 -- --]
[0.88 0.88 0.88 0.88 -- -- -- 0.95]
[0.88 0.88 0.88 0.88 -- -- 0.88 --]
[0.88 0.88 0.88 0.88 -- 0.88 -- --]
[0.88 0.88 0.88 0.88 0.88 -- -- --]

Star Acquisition Probability Table:
----------------------------------------------
Exactly Acquiring:              At Least Acquiring (8 or 7 or ...):
8 Stars  : 3.88242e-01              8 Stars  : 0.38824182
7 Stars  : 3.91028e-01              7 Stars  : 0.77927006
6 Stars  : 1.71112e-01              6 Stars  : 0.95038185
5 Stars  : 4.24354e-02              5 Stars  : 0.99281726
4 Stars  : 6.51204e-03              4 Stars  : 0.99932929
3 Stars  : 6.31720e-04              3 Stars  : 0.99996101
2 Stars  : 3.77070e-05              2 Stars  : 0.99999872
1 Stars  : 1.26009e-06              1 Stars  : 0.99999998

Probability of Acquiring Exactly Zero Stars:
----------------------------------------------
0 Stars  : 1.7916e-08


In [12]:
0.98 * 0.98 * 0.98 * 0.98 * 0.98 * 0.98 * 0.98 * 0.85


Out[12]:
0.7379067032597119