このSOの質問に対するこの回答を読む:なぜ乱数ジェネレーターを組み合わせないのですか?、それは話します
非常に高品質のPRNG(疑似乱数ジェネレーター)
だから何が高品質のPRNGを構成するのか不思議に思いますが、「よりランダム」であるとまとめることができると思いますが、
質問1:PRNGのどの品質を使用して、「ランダム」または「良い」かを説明しますか?
質問2:「品質が悪い」PRNGがある場合、品質を向上させる方法はありますか?
このSOの質問に対するこの回答を読む:なぜ乱数ジェネレーターを組み合わせないのですか?、それは話します
非常に高品質のPRNG(疑似乱数ジェネレーター)
だから何が高品質のPRNGを構成するのか不思議に思いますが、「よりランダム」であるとまとめることができると思いますが、
質問1:PRNGのどの品質を使用して、「ランダム」または「良い」かを説明しますか?
質問2:「品質が悪い」PRNGがある場合、品質を向上させる方法はありますか?
回答:
PRNGの品質にはいくつかの基準があります。
最後の2つの基準は強く関連しています。
品質の悪いPRNGがある場合は、硬度を増幅することで改善できることがよくあります。PRNGのコピーをいくつか(異なるランダムキーを使用して)取り、それらをXORします。多くの場合(すべてではありませんが)、これにより品質が大幅に向上します。
実用的な考慮事項があります:使いやすさは?どのくらい速いのか?乱数の異なるシーケンスを生成するのはどれほど簡単ですか?乱数を再生するのは簡単ですか(たとえば、100億個の乱数を生成した場合、まったく同じ100億個の乱数を再度生成できますか?)
大きな問題:生成された数値は一連の乱数のように動作しますか?私が今まで使用した最初のPRNGは、2つの連続する値という奇妙な特性を持っていました。あまりランダムではありません。そのため、あらゆる種類の統計テストを実行して、乱数ジェネレータがランダムに動作するかどうかを確認できます。ランダムに振る舞うほど、良いです。
そして、暗号のランダムさです。私があなたに最後のn個の乱数を与え、そして乱数発生器がどのように振る舞うかについて完全な知識があれば、次の乱数を予測できますか?もしそうなら、それはあなたが敵がいる状況ではそれを不適当にします。