ฉันพยายามเขียนรหัสอัลกอริทึมเพื่อแนะนำการเดิมพันในเกม 1X2 (น้ำหนัก)
โดยพื้นฐานแล้วแต่ละเกมมีชุดการแข่งขัน (ทีมเจ้าบ้าน vs ทีมเยือน):
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
);
ในกรณีนี้ฉันจะสูญเสียสองครั้งโดยไม่มีเหตุผลที่ดี
โดยทั่วไปก็สามารถเลือกที่ใหญ่ที่สุด (อาจจะโง่) เดิมพันและไม่ฉลาดเดิมพันที่ยิ่งใหญ่ที่สุด
ฉันตีหัวของฉันกับกำแพงเป็นเวลาหลายวันแล้วหวังว่าฉันจะได้รับ epiphany บางชนิด แต่จนถึงตอนนี้ฉันก็สามารถคิดวิธีแก้ปัญหาสองแบบครึ่งหนึ่ง [ไม่ดี]:
1) วาด "เส้น"
โดยทั่วไปฉันจะบอกว่าการจับคู่กับ stdev ต่ำกว่าค่าที่ระบุจะเป็นสามเท่าการจับคู่กับ stdev ที่สูงกว่ามากจะเป็นการเดิมพันสองครั้งและการเดิมพันเดี่ยวที่เหลือ
แน่นอนปัญหานี้คือการหาขอบเขตที่เหมาะสม - และแม้ว่าฉันจะพบค่าที่สมบูรณ์แบบสำหรับการเดิมพัน "ฉลาดที่สุด" ฉันยังไม่รู้ว่าฉันมีเงินเพียงพอที่จะเล่นเดิมพันที่แนะนำหรือไม่ ฉันสามารถเดิมพันที่ยิ่งใหญ่กว่า (ยังฉลาด) ...
2) Bruteforce
ฉันคิดด้วยความคิดนี้ในขณะที่เขียนคำถามนี้และฉันรู้ว่ามันจะไม่สมเหตุสมผลในบริบทที่ฉันอธิบาย แต่ฉันคิดว่าฉันสามารถทำให้มันทำงานโดยใช้ตัวชี้วัดที่แตกต่างกันบ้าง โดยทั่วไปฉันจะทำให้โปรแกรมแนะนำการเดิมพัน (# ของการเดิมพันที่สามและคู่) สำหรับทุกจำนวนเงินที่เป็นไปได้ของเงินฉันสามารถเล่น (จาก1
ไป4
ในตัวอย่างของฉัน) ใช้หลอกอัลกอริทึมที่ผมอธิบายไว้ข้างต้นและการคำนวณมูลค่าการจัดอันดับโลก (บางสิ่งบางอย่าง ชอบ% of symbols * match stdev
- ฉันรู้ว่ามันไม่สมเหตุสมผล)
การเดิมพันที่มีอันดับสูงสุด (ครอบคลุมความไม่แน่นอน) จะเป็นการเดิมพันที่แนะนำ ปัญหาเกี่ยวกับวิธีการนี้ (นอกเหนือจากความจริงที่ว่ามันยังไม่สมเหตุสมผล) คือเกมที่โปรแกรมของฉันจะทำงานด้วยไม่ จำกัด การแข่งขัน 3 ครั้งและจำนวนชุดการเดิมพันสองและสามครั้งสำหรับการแข่งขันเหล่านั้นจะเป็น สูงขึ้นอย่างมาก
ฉันรู้สึกว่ามีวิธีการแก้ปัญหาที่สง่างาม แต่ฉันก็ไม่สามารถเข้าใจมัน ...
ความช่วยเหลือใด ๆ ที่ถอดรหัสปัญหานี้ได้รับการชื่นชมอย่างมากขอบคุณ
ดูเหมือนจะมีความสับสนเกี่ยวกับปัญหาของฉันฉันได้รับการแก้ไขแล้วในคำถามนี้และในความคิดเห็น แต่การตีความที่ผิดยังดูเหมือนว่าจะเหนือกว่าอย่างน้อยกับบางคน
ฉันต้องรู้ว่าฉันจะเล่นการเดิมพันสามเท่าสองเท่าและซิงเกิลสำหรับเกมใดเกมหนึ่ง (ทุกแมตช์) ฉันรู้แล้วว่าฉันต้องการเล่นสัญลักษณ์ใดโดยดูที่การแข่งขันแต่ละรายการ