6年間、自分のWebサイトに乱数ジェネレーターのページを置いてきました。長い間、これは「乱数ジェネレーター」に関するGoogleでの最初または2番目の結果であり、ディスカッションフォーラムやブログで何百とは言わないまでも数十のコンテストや描画を決定するために使用されてきました(ウェブログと通常は見てください)。
今日、誰かが思ったほどランダムではないかもしれないと私に電子メールで送ってきました。彼女は非常に大きな乱数(たとえば、1〜10000000000000000000)を生成しようとしましたが、ほとんど常に同じ桁数であることがわかりました。確かに、私は関数をループでラップしたので、数千の数を生成でき、非常に大きな数の場合でも、変動は約2桁しかありませんでした。
どうして?
これはループバージョンですので、自分で試すことができます。
http://andrew.hedges.name/experiments/random/randomness.html
これには、Mozilla Developer Networkから取得した単純な実装と、存在しないWebページ(Paul Houleの「Central Randomizer 1.3」)をスワイプした1997年のコードの両方が含まれています。ソースを表示して、各メソッドの動作を確認します。
私はここや他の場所でメルセンヌツイスターについて読みました。私が興味を持っているのは、JavaScriptの組み込みMath.random関数からの結果に大きなばらつきがない理由です。ありがとう!