2012-01-27 13 views
4

そこには非常に多くのランダム化装置があります。 Some標準のものは疑いの余地がありません。 Someは高品質でスピードがあると主張しています。 Someは高品質であると主張しています。 Someは、さらに高速で優れた品質を主張しています。 Someは速度を要求しますが、qualityです。乱数発生器の最適な選択

私が知っている事実は、mwc-randomがCriterionベンチマークライブラリで使用されており、claimsが非常に有望であるということです。

すべての発電機に、少なくとも2つの性質があるので:堅牢性と生成された番号の品質は - 私は三つのカテゴリーに最高の発電機を選ぶの質問を分割します:

  1. 最速
  2. 最も乱数

だからこれは、これは十分な速度で、これらの特性の両方の最適な組合せを有するものを生成する1なぜ?

+0

私は、RNGの特性の特徴付けが不十分であると主張します。たとえば、どこにでも「品質」や「スピード」を定義していないとします。それはIntの生産で最も速いですか?浮き沈み?任意のビット列?暗号/セキュリティのニーズに安全に使用できる数字ですか?それは逆戻りしていますか?すべての擬似ジェネレータが最終的にロールオーバーするため、ロールオーバではどうなりますか? –

+0

私はこの問題を少し修正しましたが、新しいカテゴリ(ints、float)を追加すると良い答えが得られるとは思いません。 –

+2

私は、(3)あなたが与えた情報には、それがあなたがそれをどのように使用しているかによって決まるとは言えません。 – luqui

答えて

8

私はmwc-randomについてしか話すことができません。

  1. これは、Phenom IIのWord32あたり15nsです。あなたがどれくらい速くそれをあなたのコンピュータ上で測定したいのであれば、ベンチマークセットが付属しています。それでも時間を取引することは可能です。 Xorshift RNGは高速である必要がありますが、2^8222の代わりに2^32または2^64の周期が短くなければなりません。

  2. ランダム性。 mwc-randomは、暗号的に安全ではありませんがランダムテストではうまくいくアルゴリズムMWC256(別名:MWC8222)を使用しています。特に、mwc-randomはdieharder randomness testを渡します。