作者Lavchi (拉維奇)
看板java
標題[問題] 所有比賽結果(大數據)
時間Sun May 31 23:11:35 2015
因為有在看棒球 想寫一支小小程式看一下比賽結果
規則是這樣,目前有 A, B, C, D 四隊比賽
假設 A 目前贏 10 場
B 目前贏 11 場
C 目前贏 10 場
D 目前贏 11 場
每一隊都有可能與其他三支隊伍比賽
而剩下的場次有 30 場以上,每一次勝負假設都一半一半
如果單純用 2^30 = 1073741824 (十億種可能)
最後要看 A 隊獲勝 > B,C,D 才算獲勝
我是用一個 array list 去存現在結果,目前是 (獲勝) = 10,11,10,11
假設下一場是 A vs B,則結果就會變成
11,11,10,11 (A 獲勝)
10,
12,10,11 (B 獲勝)
下下一場假設是 A vs C,因為要根據上一輪的結果去排列組合就會變成四種可能
11,11,10,11 (第一場是 A 獲勝)
-->
12,11,10,11 與 11,11,
11,11
10,
12,10,11 (第一場是 B 獲勝)
-->
11,12,10,11 與 10,12,
11,11
這樣排列組合就有四種結果
我想問的是,因為比賽還剩 30 場總共有 2^30 這麼多種可能 (應該算大數據計算吧) @@
一定會 out of memory,有嘗試過加參數 -Xmx4096m 但是一樣會太大
有沒有大大知道要怎麼改良這種算法比較好的?
上網不知道要怎麼查關鍵字...
查詢 game, all result 或其他關鍵字都跑出程式比賽結果
先謝謝知道的大大了
(呃... 不知道有沒有人懂我想問的東西 orz)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.161.52.214
※ 文章網址: https://webptt.com/m.aspx?n=bbs/java/M.1433085100.A.F24.html
※ 編輯: Lavchi (49.215.186.81), 05/31/2015 23:15:49
1F:→ Killercat: 你不需要精確到把每種結果都算出來啊.... 05/31 23:17
2F:→ Killercat: 你只需要設定好機率 跑很多次 拿平均值就可以了 05/31 23:17
3F:→ Killercat: 或者你有什麼目的非得把「所有可能的未來」都算出來? 05/31 23:18
簡單說我想列出現在中華職棒四支隊伍打到最後 每一隊獲勝的機率
目前四隊獲勝分別為 (21, 26, 20, 24) 這四種
有想過大約計算 類似 K 大堤的概念,但感覺又不是很精準
總覺得應該有方法可以有效率的精準算出實際每一隊獲勝的可能
至少我的方法是非常沒有效率的算法 orz
※ 編輯: Lavchi (49.215.186.81), 05/31/2015 23:21:35
另外就是有球隊 B 與 C 有和局的狀況發生
所以最後的情況一定要
A 獲勝 > B 才算獲勝,如果最後的獲勝次數是 A = B 則判定 B 獲勝
A 與 C 一樣,因為 C 有和局在身,一定要 A > C 才算獲勝
而 A 與 D 因為都沒有和局在身,所以如果是 A = D 的況狀,則要多加開一局比出勝負
呃... 好像有點複雜 orz
※ 編輯: Lavchi (49.215.186.81), 05/31/2015 23:26:28
4F:→ Killercat: 這數據一定會收斂的,而且A跟B打,贏面一定是50:50嗎? 05/31 23:35
5F:→ Killercat: 你的假設其實已經隱含了「ABCD四隊實力相等」的前提了 05/31 23:36
6F:→ Lavchi: 是的,我的第一部分是先假設 50/50 去計算結果 05/31 23:42
7F:→ Lavchi: 第二部分才打算動態調整,現在 A 勝率 50%,贏一場後下一 05/31 23:42
8F:→ Lavchi: 次對戰勝率會變成 51% 之類的去計算更真實的數據 05/31 23:42
10F:→ chucheng: 基本上就是隨機去模擬,跑個十萬次 06/01 01:33
11F:→ chucheng: Memory不會爆,然後跑愈多次結果愈準 06/01 01:33
12F:推 ScottOAO: 這叫大數據...? 稱的上大數而已唄 06/01 07:49
13F:→ NewSpec: 這是單純的機率問題, 不是big data 06/01 23:08
14F:推 AI3767: 覺得用遞迴做DFS,每次到第30場只留統計值,應該夠用了? 06/01 23:13
15F:→ kattte: 這只是機率問題吧 06/02 03:03
16F:推 LaPass: 請問你要算什麼東西? 06/02 11:01
17F:推 cyclone350: 我也覺得可以簡化成數學問題,用瓊舉法有點不恰當 06/02 22:49
18F:推 k47100014: 大數據應該是要拿這四隊的全部的歷史比賽下去計算才對 06/07 12:14