下大賭注
我一直在嘗試編寫一種算法來建議 1X2(加權)遊戲中的投注。
基本上,每場比賽都有一組比賽(主隊對客隊):
1
: 主場獲勝X
: 畫2
: 客場獲勝對於每個匹配項和符號(
1
、X
和2
),我將分配一個百分比來表示該符號成為正確匹配結果的機會/可能性。這是一個表示結構的數組:$game = array ( 'match #1' => array // stdev = 0.0471 ( '1' => 0.3, // 30% home wins 'X' => 0.4, // 40% draw '2' => 0.3, // 30% away wins ), 'match #2' => array // stdev = 0.4714 ( '1' => 0.0, // 0% home wins 'X' => 0.0, // 0% draw '2' => 1.0, // 100% away wins ), 'match #3' => array // stdev = 0.4027 ( '1' => 0.1, // 10% home wins 'X' => 0.0, // 0% draw '2' => 0.9, // 90% away wins ), );
我還計算了每個賭注的標準偏差(在上面的片段中註釋);較高的標準差代表較高的確定性,而具有最低標準差的匹配則轉化為較高的不確定性,理想情況下,如果可能的話,應該用雙倍或三倍賭注來覆蓋。
以下偽算法應描述整個工作流程:
for each match, sorted by std. dev // "uncertain" matches first if still can make triple bets mark top 3 symbols of match // mark 3 (all) symbols else if still can make double bets mark top 2 symbols of match // mark 2 (highest) symbols else if can only make single bets // always does mark top symbol of match // mark 1 (highest) symbol
到目前為止一切順利,但我需要告訴算法我想花多少錢。假設
1
以任何貨幣計算的單次投注成本,計算多次投注成本的公式是:2^double_bets * 3^triple_bets * cost_per_bet (= 1)
顯然,該算法應該嘗試將盡可能多的可用資金分配到投注建議中(否則就沒有多大意義),現在這變得更加棘手……
假設我想支付最多
4
,列出 PHP 中所有可能的倍數(@IDEOne):$cost = 1; // cost per single bet $result = array(); $max_cost = 4; // maximum amount to bet foreach (range(0, 3) as $double) { foreach (range(0, 3) as $triple) { if (($double + $triple) <= 3) // game only has 3 matches { $bets = pow(2, $double) * pow(3, $triple); // # of bets $result[$bets] = array ( 'cost' => $bets * $cost, // total cost of this bet 'double' => $double, 'triple' => $triple, ); if ($result[$bets]['cost'] > $max_cost) { unset($result[$bets]); } } } } ksort($result);
產生以下輸出:
Array ( [1] => Array ( [cost] => 1 [double] => 0 [triple] => 0 ) [2] => Array ( [cost] => 2 [double] => 1 [triple] => 0 ) [3] => Array ( [cost] => 3 [double] => 0 [triple] => 1 ) [4] => Array ( [cost] => 4 [double] => 2 [triple] => 0 ) )
問題
如果我選擇玩可用的最大金額(
4
),我將不得不下注兩個雙打,如果我使用上面描述的偽算法,我最終會得到以下下注建議:
match #1
=>X1
match #2
=>2
match #3
=>12
3
與成本高且包含更多不確定性的三重賭注相比,這似乎不是最理想的:
match #1
=>X12
match #2
=>2
match #3
=>2
如果您認為
match #3
賠率可能是:上述示例將獲得更多相關性:$game['match #3'] = array // stdev = 0.4714 ( '1' => 0.0, // 0% home wins 'X' => 0.0, // 0% draw '2' => 1.0, // 100% away wins );
在這種情況下,我會無緣無故地浪費雙倍。
基本上,我只能選擇最大的(可能是愚蠢的)賭注,而不是最聰明、最大的賭注。
幾天來,我一直在用頭撞牆,希望能得到某種頓悟,但到目前為止,我只能想出兩個半[壞]的解決方案:
1)畫一條“線”
基本上我會說,標準偏差低於特定值的比賽將是三倍,標準偏差高得多的比賽將是雙重投注,其餘的單一投注。
當然,這樣做的問題是找出適當的具體界限——即使我確實找到了“最聰明”賭注的完美價值,我仍然不知道我是否有足夠的錢來玩建議的賭注,或者是否我可以做一個更大(也很聰明)的賭注……
2)蠻力
我在寫這個問題時想出了這個想法,我知道在我描述的上下文中它不會完全有意義,但我認為我可以使用稍微不同的指標讓它工作。基本上,我可以讓程序為我可以玩的每一個可能的金額(在我的例子中從
1
到)建議下注(三倍和雙倍賭注的數量4
),應用我上面描述的偽算法併計算全球排名值(一些像% of symbols * match stdev
- 我知道,這沒有意義)。排名最高的賭注(涵蓋不確定性)將是建議的賭注。這種方法的問題(除了它還沒有任何意義的事實之外)是我的程序要使用的遊戲不限於 3 場比賽,並且這些比賽的雙重和三重投注組合的數量將是顯著更高。
我覺得有一個優雅的解決方案,但我無法掌握它……
非常感謝任何解決此問題的幫助,謝謝。
我的問題似乎有些混亂,我已經在這個問題和評論中解決了這個問題,但至少對某些人來說,誤解似乎仍然盛行。
我需要知道我將為特定比賽(所有比賽)玩多少三倍、雙倍和單倍投注。通過單獨查看每場比賽,我已經知道我想玩什麼符號。
我想我想出了一個可行的蠻力解決方案,它是這樣的:
- **1)**計算我可以進行的多種投注的每種可能組合
對於我在問題中提供的示例和金額,這將是:
- 3 單、0 雙、0 三 = 相當於 1 單註
- 2 個單註、1 個雙注、0 個三注 = 相當於 2 個單註
- 2 個單註、0 個雙注、1 個三注 = 相當於 3 個單註
- 1 個單註、2 個雙注、0 個三注 = 相當於 4 個單註
- **2)**計算每場比賽的符號賠率的標準差
| 1 | X | 2 | stdev | |---------|---------|---------|---------| Match #1 | 0.3 | 0.4 | 0.3 | 0.047 | |---------|---------|---------|---------| Match #2 | 0.1 | 0.0 | 0.9 | 0.402 | |---------|---------|---------|---------| Match #3 | 0.0 | 0.0 | 1.0 | 0.471 |
- **3)**對於每個多重投注組合(步驟 1),使用以下公式計算排名:
排名 = (#n(x) [+ #n(y) [+ #n(z)]]) / stdev(#n)
其中
#n
是特定匹配,#n(x|y|z)
是符號的有序賠率。
- 匹配從低標準偏差到高標準偏差進行處理。
- 每場比賽中的單個符號從高賠率到低賠率進行處理。
測試 1 個單註、2 個雙注、0 個三注:
(#1(X) + #1(1)) / stdev(#1) = (0.4 + 0.3) / 0.047 = 14.89
(#2(2) + #2(1)) / stdev(#2) = (0.9 + 0.1) / 0.402 = 2.48
#3(2) / stdev(#3) = 1.0 / 0.471 = 2.12
這個賭注給了我的全球排名**
14.89 + 2.48 + 2.12 = 19.49
**。
測試 2 個單註、0 個雙注、1 個三注:
(#1(X) + #1(1) + #1(2)) / stdev(#1) = (0.4 + 0.3 + 0.3) / 0.047 = 21.28
#2(2) / stdev(#2) = 0.9 / 0.402 = 2.24
#3(2) / stdev(#3) = 1.0 / 0.471 = 2.12
這給了我一個全球排名**
21.28 + 2.24 + 2.12 = 25.64
。:-)**
剩下的所有賭注顯然都是劣等的,因此沒有必要對其進行測試。
這種方法似乎有效,但我是通過反複試驗和直覺得出的,我缺乏數學理解來判斷它是否正確,或者是否有更好的方法……
任何指針?
**PS:**抱歉格式錯誤,但 MD 解析器似乎與 StackOverflow 不同。