5

これは、この質問に基づいています。不均一な分布を生成する多くの回答が提案され、出力の不均一性を定量化する方法を考え始めました。私はパターン化の問題を探しているのではなく、単一の値の側面だけを探しています。

受け入れられる手順は何ですか?


私の現在の考えは、各値のエントロピーを計算し、加重平均をとることによって、呼び出しごとの平均シャノン エントロピーを計算することです。これは、期待値と比較することができます。

私の懸念は

  1. これは正しいです?
  2. 精度を落とさずにこれらの値を計算する方法は?

#1については、正しいかどうか疑問に思っています。

#2の懸念は、1/7 +/- 1e-18のような大きさの数値を処理することであり、浮動小数点エラーが最小の問題以外で私を殺すのではないかと心配しています. 計算の正確な形式は、ここでいくつかの大きな違いをもたらす可能性があり、いくつかの特別なログケースにはいくつかの ASM オプションがあることを思い出すようですが、これに関するドキュメントを見つけることができないようです.


この場合、範囲の「適切な」PRNG を使用して、範囲[1,n]の SRNG を生成します[1,m]。問題は、入力よりも結果がどれほど悪いかということです。

私が持っているのは、各出力値の予想発生率です。

4

3 に答える 3

4

NIST には、さまざまなメトリックにまたがる乱数ジェネレーターを統計的に分析するための一連のドキュメントとツールがあります。

http://csrc.nist.gov/groups/ST/toolkit/rng/index.html

これらのテストの多くは、Dieharder PRNG テスト スイートにも組み込まれています。

http://www.phy.duke.edu/~rgb/General/rand_rate.php

PRNG の使用方法は非常に多くあるため、さまざまなメトリックが多数あります。単独で PRNG を分析することはできません。ユース ケースを理解する必要があります。これらのツールとドキュメントは、これに役立つ多くの情報を提供しますが、結局のところ、アルゴリズムが適切であるかどうかを判断する前に、実際に何が必要かを理解する必要があります。NIST のドキュメントは、やや密ではありますが、完全です。

-アダム

于 2009-02-06T21:40:34.477 に答える
0

TestU01 には、Dieharder よりもさらに厳密なテスト セットがあります。最大のテスト セットは「BigCrush」と呼ばれますが、実行に時間がかかるため、単に「Crush」と「SmallCrush」と呼ばれるサブセットもあります。最初に SmallCrush を試して、PRNG が合格した場合は Crush を試し、合格した場合は BigCrush を試します。それも通過すれば、それで十分なはずです。

TestU01はこちらから入手できます。

于 2011-05-04T16:12:54.390 に答える