totoBIGの件は何が問題なのか、なるべく分かりやすく説明してみる

http://mubou.seesaa.net/article/447207389.html
ほう。
totoBIGがどんなギャンブルなのか分からなかったので、最初いまいちピンと来なかったのですが…。
 
・購入するとランダムで乱数(0〜2)が14個出力され、それが自分のくじとなる
・そのくじの数値14個と、未来に開催されるスポーツの試合結果が一致すると賞金がもらえる
・14個すべて一致する確率は1/480万
・ある人が5個くじを購入した
・その人が翌日、5個じゃ足りないなとまた10個購入した
・あれ? 10個新しく購入したうちの最初の5回分…。前日買ったくじとまったく配列一緒やんけ!
・くじの配列はランダムなはずだろ!
・「14個の乱数×5回」が完全一致する確率は2,503,160,000,000,000,000,000,000,000,000,000分の1
・なんか不正しとるんじゃないか!?
 
というのが今までの流れ。
まぁプログラマからしてみると「疑似乱数のシード値が一致したんだろうな。低品質なプログラムだな。これで公営ギャンブルとか笑わせてくれるわ」ってところでしょうか。
 
さて、結論はたぶんこれでOKなのですが、ふと気になったことが。
一般的に、疑似乱数のシード値は64bitなんですよね。
なので、2,503,160,000,000,000,000,000,000,000,000,000分の1ってことはなくて、一致する確率はぐっと下がって18,446,744,073,709,551,616分の1程度になります。
ぐっと(笑)
 
と思いきや、今回のようなまぬけな実装をする会社ですから、もっとまぬけなことになっているはず。
C言語のsrand(unsigned int);を使っている場合を考えると、32bitOSならシード値は32bitになるわけです。
4,294,967,296分の1か。
おお! ぐぐっと一致する確率が下がりました。
43億分の1くらいです。
これなら、偶然の一致である可能性もなくはないですね!
 
まとめ。
プログラマーとして仕事してるなら、もっとまじめに勉強しろ。