Kanerva's Figure 1.2 (page 25)


In [4]:
def calculate_probabilities():
    from math import factorial
    comb = lambda a, b: factorial(a)/factorial(b)/factorial(a-b)
    acc = [0]
    for i in xrange(1001):
        acc.append(acc[-1] + comb(1000, i))
    x = range(0, 1001)
    y = [acc[i]/float(2**1000) for i in xrange(1001)]
    return x, y

In [5]:
x, y = calculate_probabilities()

In [6]:
zip(x, y)[420+1:451+2]


Out[6]:
[(421, 2.34855463163212e-07),
 (422, 3.2683072799845206e-07),
 (423, 4.5302427856623403e-07),
 (424, 6.254589646848581e-07),
 (425, 8.601165446151555e-07),
 (426, 1.178146582355982e-06),
 (427, 1.607412478367661e-06),
 (428, 2.1844584369407377e-06),
 (429, 2.956998937553759e-06),
 (430, 3.98705293837112e-06),
 (431, 5.354868832479756e-06),
 (432, 7.163813286405329e-06),
 (433, 9.546427625024893e-06),
 (434, 1.2671889390234851e-05),
 (435, 1.6755153954460764e-05),
 (436, 2.206809129549954e-05),
 (437, 2.8952975693864007e-05),
 (438, 3.783873038649e-05),
 (439, 4.9260373975413374e-05),
 (440, 6.388215916214442e-05),
 (441, 8.252493527522651e-05),
 (442, 0.00010619830176802917),
 (443, 0.00013613814762657373),
 (444, 0.00017385018823395037),
 (445, 0.00022116011304996116),
 (446, 0.00028027094046052743),
 (447, 0.0003538281360050662),
 (448, 0.0004449929823846512),
 (449, 0.0005575245896344514),
 (450, 0.0006958707972110431),
 (451, 0.0008652680424881588),
 (452, 0.0010718500489236657)]

In [12]:
y[451+1]


Out[12]:
0.0010718500489236657

In [ ]: