事故発生の間隔(2)

1年365日に事故が7件起きるとして、事故が起きた日の最小間隔の分布を正確に知りたい。

まず、考えやすいように、10日で3件起きる場合を考えよう。
第1の事故(時系列で「第1」と言っているわけではない)は最初の日に起きたと考えてよい。だから、全ての場合の数は10×10=100。
事故の最小間隔は4日以上はありえない。
3日の場合、3+3+4になる。要するに、10-3×3=1を3つで分配するから、1H3 = 3C2。第1の事故以外の順番があるので、×2で6通り。
2日以上の場合、4を3つで分配するから、4H3 = 6C2 = 15。×2で30通り。
1日以上の場合、7H3×2 = 9C2×2 = 72通り。
まとめると、

0日 28
1日 42
2日 24
3日 6

365日7件でも同様に考えて、Pythonで組んでみた。


nDays = 365
nAcc = 7

def combination(n, m):
result = 1;
for i in range(m):
result *= n - i;
for i in range(2, m + 1):
result /= i;
return result

def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n - 1)

nAll = nDays ** (nAcc - 1)

A = range(nDays / nAcc + 1)
n = 1
for i in range(1, nAcc):
n *= nDays - i
A[0] = nAll - n
print A[0]
for i in range(1, nDays / nAcc + 1):
A[i] = combination(nDays + nAcc - 1 - nAcc * i, nAcc - 1)
A[i] -= combination(nDays - 1 - nAcc * i, nAcc - 1)
A[i] *= factorial(nAcc - 1)

for i in range(nDays / nAcc + 1):
print "%d %f" % (A[i], float(A[i]) / nAll)

結果はこうなった。

132974790903865 0.056236
247048948681920 0.104478
223824815781840 0.094657
202381093091520 0.085588
182613390125040 0.077228
164421479154240 0.069535
147709210501440 0.062467
132384427832160 0.055986
118358883447840 0.050055
105548153578560 0.044637
93871553675760 0.039699
83252053704960 0.035208
73616193438480 0.031133
64893997748160 0.027444
57018891898080 0.024114
49927616837280 0.021115
43560144492480 0.018422
37859593060800 0.016011
32772142302480 0.013860
28246948833600 0.011946
24236061418800 0.010250
20694336264000 0.008752
17579352309120 0.007434
14851326520800 0.006281
12473029185120 0.005275
10409699200320 0.004402
8628959369520 0.003649
7100731693440 0.003003
5797152663120 0.002452
4692488552640 0.001984
3763050711840 0.001591
2987110859040 0.001263
2344816373760 0.000992
1818105589440 0.000769
1390623086160 0.000588
1047634983360 0.000443
775944232560 0.000328
563805910080 0.000238
400842509760 0.000170
277959235680 0.000118
187259294880 0.000079
121959190080 0.000052
76304012400 0.000032
45482734080 0.000019
25543501200 0.000011
13308926400 0.000006
6291381600 0.000003
2608290720 0.000001
897422400 0.000000
232182720 0.000000
36907920 0.000000
2157120 0.000000
5040 0.000000

平均は、7.44となった。


意外と簡単な問題だった。