アルゴリズム

乱数生成のアルゴリズム

多くのプログラミング言語には、乱数を生成するための関数が用意されています(RANDOM、RANDなど)。しかし、そのアルゴリズムはブラックボックスで、結果には偏りが生じがちです。また、占いなどの結果が毎回変わってしまっては信憑性がありません。そこで、一定の法則に基づき、同じ条件を与えれば確実に再現できる「疑似乱数」のアルゴリズムを考えます。

擬似乱数生成法

  • 平方採中法(二乗中抜き法)
  • 線形合同法(乗算合同法・混合合同法)
  • 線形帰還シフトレジスタ(M系列)
  • メルセンヌ・ツイスタ
  • キャリー付き乗算
  • Xorshift
  • Lagged Fibonacci 法
  • RANLUX
  • Permuted congruential generator
  • 64ビット最適均等分布F2-線形発生法
  • BBS(Blum-Blum-Shub)
  • Fortuna

などなど、無数の疑似乱数生成法があります。

最も古典的なアルゴリズムは、ノイマンの提唱した「平方採中法 (middle-square method:二乗中抜き法)」です。

ノイマンといえば、

コンピュータを発明したとき、ノイマンはこう言いました。

コンピュータができた。」

ボケて(bokete)

で有名な人ですね!(爆)

「悪魔の頭脳」とまで呼ばれたコンピューターの父、ジョン・フォン・ノイマンの名言が、非常に頭悪そうな感じになっちゃってますが…本当は「俺の次に計算の早い奴ができた」と言いました。日本語の翻訳としては、「俺の次に頭の良い奴ができた」「世界で2番目に計算の上手い奴ができた」など、バリエーションがあります。ボケて(bokete)のインパクトが強すぎて、本当は何て言ったか忘れられがちな、かわいそうな人です。

コメント