我有一個對象Tournament
有匹配的列表,每個人都有的概率存儲在Map<Player, Float>
該PLAYER1或player2勝。
我重複獲取元件i
和i + 1
創建使用他們的獲獎者一個新的比賽的比賽名單上。優勝者是這樣選擇的:如果p1(或p2)以高於某個閾值的概率獲勝,我選擇它,否則我必須分支並評估兩個案例(案例1:p1勝 - 案例2:p2勝)。
我的目標是創建所有可能的場景並評估所有可能的錦標賽獲勝者。
我能做到這一點沒有分支(只是遞歸評估所有比賽的贏家,直到只有最後一場比賽),但是如果我想所有的情況我真的不知道該怎麼做。
任何想法?我應該使用哪種數據結構?是否有可能做類似C fork
的事情並使用它?評估所有比賽場景
Q
評估所有比賽場景
0
A
回答
0
最後我解決了使用蒙特卡洛方法。我多次運行錦標賽(10k),並且每次模擬都根據他的概率選擇每場比賽的勝者。由於我運行了很多次,我相信我會遇到所有可能的情況(並且我會一步一步保存它們,以及預測的錦標賽冠軍)。 它被證明是快速和有效的,不需要額外的數據結構(只需保存所有場景和地圖以保存錦標賽獲勝者的概率)。
1
是否有可能做一些像C叉子和使用它?
您可以使用ExecutorService來提交任意數量的任務。假設它們是CPU綁定的,你可能需要使用一個固定的線程池,其大小爲Runtime.getRuntime.availableProcessors()
0
你可能正在尋找某種樹型瀏覽算法。您可以使用breadth-first-search或depth-first-search。使用遞歸基本上使用後者,但要小心,Java堆空間不夠用,而且最終必須由您自己實現。
BFS和DFS都非常相似,當涉及到使用的數據結構它們的區別。 BFS使用隊列,由JSE的LinkedList
實現,而DFS使用堆棧,由Stack
類實現。
相關問題
- 1. 比賽條件場景
- 2. Tensorflow評估:評估所有圖像
- 3. 賽後的多場比賽
- 4. 賽後第一場比賽
- 5. Expect腳本 - 在比賽結束後停止評估並繼續評估
- 6. 淘汰賽推遲評估
- 7. 正則表達式在一場比賽中獲得所有比賽
- 8. 爲每場比賽
- 9. 取代第二場比賽跳過第一場比賽在C#
- 10. 的Preg比賽沒有在第一場比賽
- 11. node.js - 評估現場流程
- 12. Python比較評估
- 13. 如何第一場比賽
- 14. GroupBy每50場比賽| AngularJs
- 15. Python最後一場比賽
- 16. GROK第三場比賽
- 17. 連續兩場比賽
- 18. 構建比賽現場
- 19. Perl遍歷每場比賽
- 20. 創造出比賽場
- 21. VLOOKUP困境多場比賽
- 22. XNA聯兩場比賽
- 23. 淘汰賽,評估可觀察到的
- 24. Game Center Turn Based比賽。一場比賽內多種類型的比賽?
- 25. EXC_BAD_INSTRUCTION評估布爾比較
- 26. 評估比率表達
- 27. 評估數比最大
- 28. 正則表達式 - 想要兩場比賽只獲得一場比賽
- 29. 紅寶石評估沒有評估?
- 30. 正則表達式排除比賽內的一場比賽