擬似乱数ジェネレーター用の高品質ランダム シードの生成
srand を使用した擬似乱数ジェネレーター (PRNG) の初期化() は高品質の乱数を生成するために重要です。あなたが参照した記事では、time() 関数の出力をシードとして使用し、毎秒その固有の値を考慮することを提案しています。ただし、1 秒間に複数回実行されるアプリケーションの場合、このアプローチでは衝突が発生する可能性があります。
より信頼性の高い代替方法は、複数のエントロピー ソースを組み合わせて堅牢なシードを生成することです。ポータブル Linux アプリケーションに推奨されるアプローチの 1 つは、次の式を使用することです:
unsigned long seed = mix(clock(), time(NULL), getpid());
ここで、mix() は 3 つのエントロピー ソースを組み合わせる関数です:
これらのソースを組み合わせることで、非常に特徴的で優れた基盤を提供するシードを生成します。
mix() 関数は、Robert Jenkins の 96 ビット Mix 関数の修正バージョンであり、効果的に入力値を使用して、高度にランダム化された出力シードを作成します。
以上が疑似乱数ジェネレーター用の高品質なランダム シードを生成するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。