以下は、Bo Allenの記事の
ここからの翻訳
です 。
簡単な視覚的な例
ある日、私は
Random.orgに出会いました。
これは、クールな実際の乱数生成サービスです。 実際の乱数ジェネレーター(GNSS)と
疑似乱数ジェネレーター(PRNG)の違いは、GNSSは予測不可能な物理的手段を使用して数値(大気ノイズなど)を生成し、PRNGは数学アルゴリズム(完全にコンピューター生成)を使用することです。 これについては、
Random.org(英語)および
Wikipedia(英語)で詳しく知ることができます。
次に、Raster Generatorをいじり、比較用に擬似ランダムに生成されたラスターを作成することにしました。 そして、あなたはそれを信じないでしょう、私が試した最初のものはパターンを示しました!
Random.org

Windows上のPHP rand()

ああ! それほど「ランダム」ではありませんか?
このような明らかなパターンを作成するPRNGはほとんどありません。 言語(PHP)、オペレーティングシステム(Windows)、および関数(
rand()
)の組み合わせが非常に悪いだけです。 Linuxで同じコードを実行しましたが、そのような明らかなパターンはありませんでした。 また、このコードをWindowsで再度実行しましたが、
Mersenne Whirlwindを使用して乱数をより適切に生成するPHP関数
mt_rand()
を使用しましたが、明らかなパターンはありませんでした。 これがなぜ起こるかについてもっと知りたい場合は、これを読んでください。
ラスターの生成に使用したコードは次のとおりです。
実際、セキュリティが何らかの形で侵害されていない限り(実際にはまったく別のトピックがあります)、そのようなことは実際の乱数ジェネレーターに煩わされるべきではありません。 擬似乱数ジェネレーターの品質は大きく異なります。 ひどいものもあれば、顕著なものもありますが、実際のものはありません。