確率2%のくじ引きのシミュレーション

Graf Zeppelinのドロップが、だいたい2%くらいっぽいかもかも、ということで、実際に確率2%のくじ引きで当たりを引くまでの試行回数がどれくらいのバラツキを見せるのか、確認するための簡単なプログラムを書いてみました。

入手までの試行回数をキーとした辞書に入手した人数が入ります。

キーが500種類になるまで試行を繰り返すようになってます。これだと総試行回数は3千万回前後になる模様です。

結果なんですが、意外や、どうも、1回目とか2回目のチャレンジで入手するケースが最多になってしまって、ええーっ、ぷらずマジで!? 正直信じられないんですが、やり直せば違う結果も出るかもかもっぽいとはいえ、グラフを描くと左肩あがりのロングテールを描きます。3回やって3回同じグラフになった。

なので、数十ならともかく数百回S勝利して出ない、っていう人は、本当に、本当の本当に運が悪いっていえるのかも知れません。

なお、ついさっき試してみて、今回の試行では735回が最多チャレンジ数となりました。こんなん、もうやってられへんよね。

# -*- coding: utf-8-unix; mode: python -*-
import random

result = dict()
clg = 0

while len(result) < 500:
    cnt = 0
    havenot = True
    while havenot:
        cnt += 1
        clg += 1
        if random.randrange(50) == 1:
            if cnt in result:
                result[cnt] += 1
            else:
                result[cnt] = 1
            havenot = False

for key in range(max(result.keys()) + 1):
    if key in result:
        print('{0:>5}, {1:>3}, {2}%'.format(key, result[key],
        result[key] / clg * 100))
    else:
        print('{0:>5}, 0, 0%'.format(key))
print(',{0}'.format(clg))

結果も貼っとこう。長いので折り畳んどきます。

続きを読む