1

したがってrandom(long val)、Java で呼び出して、シードが 2^63 の乱数を生成できることがわかっています。どうすればもっとうまくいくでしょうか(シード値が大きいほど)? 私はこれがそのような成果を達成するための手動クラスでなければならないと仮定していますが、私はどのように始めるかについて少し迷っています.

4

1 に答える 1

0

シードマテリアルの量を増やす2つの方法は次のとおりです。

  • 多くのシードマテリアルを受け入れるように設計されたRNGを使用します。
  • 2つの異なるRNGを組み合わせます。

最初に、配列を使用して状態を保持するGeorgeMarsagliaのメソッドのいくつかを見てください。http://programmingpraxis.com/2010/10/05/george-marsaglias-random-number-generators/に例があります(コメントの修正に注意してください:

#define SHR3  (jsr^=(jsr<>17), jsr^=(jsr<<5))

配列t[256]は、ほとんどのシードが保持される場所です。

2つ目は、Pierre L'Ecuyerの作品、たとえば、効率的でポータブルな複合乱数ジェネレーターを見てください。

于 2012-07-06T10:46:24.953 に答える