私はいくつかの場所で乱数を使用しており、通常は必要に応じて乱数ジェネレーターを構築しています。現在、私は Marsaglia Xorshift アルゴリズムを使用して、現在のシステム時刻をシードしています。今、私はこの戦略についていくつかの疑問を持っています: 複数のジェネレーターを使用する場合、ジェネレーター間の数値の独立性 (ランダム性) はシード (同じシードと同じ数値) に依存します。時間 (ns) をシードとして使用しているため、この時間が変更されるため、これは機能しますが、単一のジェネレーターを 1 つだけ使用して、シングルトンとして使用できるようにする方がよいのではないかと考えています。これにより、乱数の品質が向上しますか?
編集: 残念ながら、c++11 はまだオプションではありません
編集:より具体的に言うと、シングルトンが乱数の品質を向上させる可能性があることを示唆しているわけではありませんが、1 つのジェネレーターのみが使用され、シードされているという事実です。それ以外の場合は、異なるジェネレーターのシードが別のジェネレーターから独立 (ランダム) であることを確認する必要があります。極端な例: まったく同じ数の 2 つのジェネレーターをシードします -> それらの間にランダム性はありません