これはほとんど概念的な問題です。私は乱数ジェネレータをテストして、いくつかのx値(例えば、サイコロロールの場合は6)に渡って一様分布に従うことでその有効性を確認することを考えていました。単純なループでこれをやっているのですが、私はそれを今持っていますが、私はシミュレーションをマルチスレッド化することを考えていました。セマフォと疑似乱数を使用した概念的マルチスレッド
セマフォ保護を持つすべてのスレッド間で共有される乱数ジェネレータを1つしか持たないので、これは私にスピードアップをもたらすだろうと思っていました(2つのスレッドにアクセスせず、同時に乱数を生成する必要があります)。
スレッドごとに他の操作(ほとんどの場合、xをチェックしてインクリメントするステートメントがスレッド化しても)が速い結果を返すことはないため、または乱数ジェネレータに依存すると、本質的に単一糸?
結果の処理からrngを分離して、素晴らしい提案をしてください。しかし、1 rngを使って複数のロールをシミュレートするにはどうすればいいのか分かりません。私はプロファイラを一度も使用していないし、始める言い訳が必要でした。私はこれを悪いと思っています。 – forTruce
簡単な例:1から6までの数字を生成する場合は、各数字に3ビットしか必要ありません。 RNGで32ビットの値が生成された場合、各値から10ビットの3ビットを取得できます。 –
RNGを別のスレッドで実行するとスピードが向上するとは思っていません。乱数のキューを同期させる際のオーバーヘッドは、どんな利点よりも重要です。 – Gray