■
結果発表。3問正解。っていうか国民主権は試験範囲じゃなかった罠。
3問正解というのがどれくらいアレなのか計算してみる。
今回は試験範囲(と思ってた範囲)の問題が、ネタ本には76問ある。
したがってそこから8問選ぶ組み合わせは 76C8 = 188億5588万3575通り。
そんでもって、自分で選んだ8個の中から1問正解するのは 68C7 × 8C1 = 77億5555万1232通り。
以下同様に
- 2問: 68C6 × 8C2 = 30,6469,3632
- 3問: 68C5 × 8C3 = 5,8375,1168
- 4問: 68C4 × 8C4 = 5700,6950
- 5問: 68C3 × 8C5 = 280,6496
- 6問: 68C2 × 8C6 = 6,3784
- 7問: 68C1 × 8C7 = 544
- 8問: 68C0 × 8C8 = 1
したがって3問以上正解する確率は
より 3.4% しかない。…思ったよりすげぇ!
これはツネ様検定3級くらいでないの?
ちなみにランダムに選んだ場合の正解数の期待値は 0.84 くらい。
8問に絞る前にピックアップした10問の中では4問正解。この確率は
ちゅうわけで 0.32% にまで少なくなる。まぁ今回は三連単という方針なので、こいつは参考記録。
で、何がアレかって、こんなものを試験前に地道にカリカリ計算していた私はアホかと。
しかも携帯電話の電卓が一億の位までしか計算できないので、ある程度の桁からは手作業。
こういう(量ばっかり多い)単純計算って癒されるね。
でも計算機のない時代の科学者はすんごい大変だったろうな、と思う。
日記に書き起こすにあたっては、上の計算をスクリプト組んで検算してある。
期待値の計算で、足し算の繰り上がりミスってた。
#!/usr/bin/python # coding:utf-8 # tsunesama.py # 組み合わせを計算するための関数群 # 順列を計算する関数。 mPn def P(m, n): result = 1 for x in range(m-n+1, m+1): result *= x return result # 組み合わせを計算する関数。 mCn def C(m, n): if n > m-n : n=m-n return P(m,n) / P(n,n) # 総和を計算する関数。numsは数字のリスト。 def sum(nums): result = 0 for num in nums: result += num return result
という関数群を別ファイル(tsunesama.py)に書いておいた上で(本当はアルファベット1文字の関数名は嫌いだけど)、
>>> from tsunesama import * >>> all = C(76,8) >>> all 18855883575L >>> >>> ans = [] >>> for x in range(1,9): ... ans.append( C(68,8-x) * C(8,x) ) ... >>> ans [7755551232L, 3064693632L, 583751168, 57006950, 2806496, 63784, 544, 1] >>> ans[2:] #3問以上正解する事象 [583751168, 57006950, 2806496, 63784, 544, 1] >>> sum(ans[2:]) 643628943 >>> 100.0 * sum(ans[2:]) / all #3問以上正解する確率(%) 3.4134117366600254 >>> >>> #期待値の計算 >>> ptane = [] >>> for x in range(1,9): ... ptane.append(ans[x-1]*x) ... >>> ptane [7755551232L, 6129387264L, 1751253504, 228027800, 14032480, 382704, 3808, 8] >>> 1.0 * sum(ptane) / all #期待値 0.84210526315789469 >>> >>> #参考記録:10問選んで4問正解の確率計算 >>> sub = [] >>> for x in range(1,9): ... sub.append( C(66,8-x) * C(10,x) ) ... >>> sub [7787894400L, 4088644560L, 1072431360, 151351200, 11531520, 450450, 7920, 45] >>> 100.0 * sum(ans[3:]) / all 0.31755486165277724