多くのプログラミング言語には、乱数を生成するための関数が用意されています(RANDOM、RANDなど)。しかし、そのアルゴリズムはブラックボックスで、結果には偏りが生じがちです。また、占いなどの結果が毎回変わってしまっては信憑性がありません。そこで、一定の法則に基づき、同じ条件を与えれば確実に再現できる「疑似乱数」のアルゴリズムを考えます。
擬似乱数生成法
- 平方採中法(二乗中抜き法)
- 線形合同法(乗算合同法・混合合同法)
- 線形帰還シフトレジスタ(M系列)
- メルセンヌ・ツイスタ
- キャリー付き乗算
- Xorshift
- Lagged Fibonacci 法
- RANLUX
- Permuted congruential generator
- 64ビット最適均等分布F2-線形発生法
- BBS(Blum-Blum-Shub)
- Fortuna
などなど、無数の疑似乱数生成法があります。
最も古典的なアルゴリズムは、ノイマンの提唱した「平方採中法 (middle-square method:二乗中抜き法)」です。
ノイマンといえば、
コンピュータを発明したとき、ノイマンはこう言いました。
「コンピュータができた。」
ボケて(bokete)
で有名な人ですね!(爆)
「悪魔の頭脳」とまで呼ばれたコンピューターの父、ジョン・フォン・ノイマンの名言が、非常に頭悪そうな感じになっちゃってますが…本当は「俺の次に計算の早い奴ができた」と言いました。日本語の翻訳としては、「俺の次に頭の良い奴ができた」「世界で2番目に計算の上手い奴ができた」など、バリエーションがあります。ボケて(bokete)のインパクトが強すぎて、本当は何て言ったか忘れられがちな、かわいそうな人です。
コメント