In [1]:
def F(n,p):
    """
    n 本の傘を持っているとする。
    n + 1 本目の置き傘ができるまでの移動回数の期待値を求める。
    """
    import numpy as np
    q = 1 - p
    A = np.eye(n+1)
    A[np.arange(n+1), np.arange(n+1)[::-1]] -= q
    A[np.arange(1,n+1), np.arange(1,n+1)[::-1]] -= p
    x = np.linalg.solve(A, np.ones(n+1))
    return x[-1]
In [2]:
N = 10
p = 0.3

E = [F(n,p) for n in range(N)]
print(E)
[3.333333333333333, 8.095238095238095, 12.85714285714285, 17.61904761904761, 22.380952380952365, 27.142857142857125, 31.904761904761866, 36.66666666666662, 41.42857142857135, 46.1904761904761]
In [3]:
answer = sum(E)
print(answer)
247.6190476190473