import numpy as np
import pandas as pd
import scipy.stats
12局中4局以上で高い一致率(10%で発生とする)を示す確率
r = 0.1
num = 12
lim = 3
s = 1.0 - scipy.stats.binom.cdf(lim, num, r)
print(100 * s)
2.5637470165
42局中に、一致率の4局を含む12局が現れる確率
num_ext = 42
num_iter = 10000
np.random.seed(20170226)
res = np.zeros(num_iter)
for ii in range(num_iter):
samp = np.random.choice([0, 1], num_ext, replace=True, p=[1.0-r, r])
seq = pd.Series(samp).rolling(window=num).sum()
res[ii] = seq.max()
s = (res > lim).mean()
print(100 * s)
17.79
念のため他のseedも試す
np.random.seed(20170227)
res = np.zeros(num_iter)
for ii in range(num_iter):
samp = np.random.choice([0, 1], 42, replace=True, p=[0.9, 0.1])
seq = pd.Series(samp).rolling(window=12).sum()
res[ii] = seq.max()
s = (res > 3).mean()
print(100 * s)
17.48