試合のリストを持つオブジェクトTournament
があり、それぞれに player1 または player2 が勝つ確率が に格納されていMap<Player, Float>
ます。要素を
取得する一致のリストを反復処理し、勝者を使用して新しい一致を作成します。勝者は次のように選択されます: p1 (または p2) が特定のしきい値を超える確率で勝った場合、それを選択します。
私の目標は、考えられるすべてのシナリオを作成し、考えられるすべてのトーナメントの勝者を評価することです。
私は分岐せずにそれを行うことができます (最後の試合だけになるまで、すべての試合の勝者を再帰的に評価するだけです) が、すべてのシナリオが必要な場合、その方法が本当にわかりません。i
i + 1
何か案は?どのデータ構造を使用すればよいですか? Cのようなことをしてそれfork
を使うことは可能ですか?
質問する
111 次
3 に答える
1
Cフォークのようなものを作って使用することは可能ですか?
ExecutorService を使用して、任意の数のタスクを送信できます。それらがCPUバウンドであると仮定すると、次のサイズの固定スレッドプールを使用することができますRuntime.getRuntime.availableProcessors()
于 2012-09-17T08:57:18.713 に答える
0
最後にモンテカルロ法で解いてみました。私はトーナメントを何度も (10,000) 実行し、シミュレーションごとに、各試合の勝者が確率に従って選ばれます。私は何度もそれを実行しているので、考えられるすべてのシナリオに遭遇すると確信しています (そして、トーナメントの予測された勝者とともに、それらを段階的に保存します)。それは高速で効果的であることが証明されており、追加のデータ構造は必要ありません (すべてのシナリオを保存するためのセットと、トーナメントの勝者を確率で保存するためのマップのみ)。
于 2012-10-10T08:10:54.373 に答える