高品質の疑似ランダムジェネレーターは何ですか?


8

このSOの質問に対するこの回答を読む:なぜ乱数ジェネレーターを組み合わせないのですか?、それは話します

非常に高品質のPRNG(疑似乱数ジェネレーター)

だから何が高品質のPRNGを構成するのか不思議に思いますが、「よりランダム」であるとまとめることができると思いますが、

  • 質問1:PRNGのどの品質を使用して、「ランダム」または「良い」かを説明しますか?

  • 質問2:「品質が悪い」PRNGがある場合、品質を向上させる方法はありますか?



2
また、平凡なPRNGと暗号で保護されたRNGを区別する必要もあります。
adrianN 2017

1
完全にランダムなビットから出力を区別することが難しい場合、PRNGは「より適切」です。
Yuval Filmus

回答:


9

PRNGの品質にはいくつかの基準があります。

  • どれくらい速いか。これには、セットアップの速度とシングルビットの生成(償却)の速度が含まれます。
  • 前のすべてのビットが与えられている場合、次のビットを推測するのがどれほど難しいか。
  • PRNGの出力と真にランダムなビットを区別するのがどれほど難しいか。

最後の2つの基準は強く関連しています。

品質の悪いPRNGがある場合は、硬度を増幅することで改善できることがよくあります。PRNGのコピーをいくつか(異なるランダムキーを使用して)取り、それらをXORします。多くの場合(すべてではありませんが)、これにより品質が大幅に向上します。


ちょうど別の質問:新しい乱数が必要になるたびに新しいシード(CPUクロックなど)を取得するだけでなく、同じシードが2回使用される場合に同じシーケンスを引き起こすPRNGを使用する理由は何ですか?このアプローチはもっとランダムではないでしょうか?
ホセ

2
@Joseこれは仕様によるものです。多くの場合、まったく同じシーケンスを何度も生成できるようにする必要があります。2つの例は、モンテカルロ実験(反復可能でなければなりません)と暗号化(2人のユーザーに、キーとして使用される同じランダムシーケンスを所有させたい場合)です。
Yuval Filmus

モンテカルロ実験では、暗号化PRNGはほとんど必要ありません。
Xavier Combelle 2017

2

実用的な考慮事項があります:使いやすさは?どのくらい速いのか?乱数の異なるシーケンスを生成するのはどれほど簡単ですか?乱数を再生するのは簡単ですか(たとえば、100億個の乱数を生成した場合、まったく同じ100億個の乱数を再度生成できますか?)

大きな問題:生成された数値は一連の乱数のように動作しますか?私が今まで使用した最初のPRNGは、2つの連続する値という奇妙な特性を持っていました。あまりランダムではありません。そのため、あらゆる種類の統計テストを実行して、乱数ジェネレータがランダムに動作するかどうかを確認できます。ランダムに振る舞うほど、良いです。

そして、暗号のランダムさです。私があなたに最後のn個の乱数を与え、そして乱数発生器がどのように振る舞うかについて完全な知識があれば、次の乱数を予測できますか?もしそうなら、それはあなたが敵がいる状況ではそれを不適当にします。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.