Tôi đã cố gắng viết mã thuật toán để đề xuất đặt cược trong các trò chơi 1X2 (có trọng số).
Về cơ bản, mỗi trận đấu có một bộ trận đấu (đội nhà vs đội khách):
1
: thắng nhàX
: vẽ tranh2
: chiến thắng trên sân khách
Đối với mỗi trận đấu và biểu tượng ( 1
, X
và 2
), tôi sẽ chỉ định một tỷ lệ đại diện cho cơ hội / khả năng của biểu tượng đó là kết quả trận đấu chính xác. Đây là một mảng đại diện cho cấu trúc:
$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
),
);
Tôi cũng tính toán độ lệch chuẩn cho mỗi lần đặt cược (nhận xét trong đoạn trích trên); độ lệch chuẩn cao hơn thể hiện độ chắc chắn cao hơn, trong khi các trận đấu có độ lệch chuẩn thấp nhất chuyển sang mức độ không chắc chắn cao hơn, và, lý tưởng nhất, nên được bao phủ bằng đặt cược gấp đôi hoặc gấp ba, nếu có thể.
Thuật toán giả sau đây sẽ mô tả quy trình công việc tổng thể:
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
Cho đến nay là tốt, nhưng tôi cần nói với thuật toán tôi muốn chi bao nhiêu. Hãy nói rằng một chi phí đặt cược 1
bằng bất kỳ loại tiền tệ nào, công thức để tính toán chi phí nhiều lần đặt cược là bao nhiêu:
2^double_bets * 3^triple_bets * cost_per_bet (= 1)
Rõ ràng, thuật toán nên cố gắng phân bổ càng nhiều tiền càng tốt vào đề xuất đặt cược (nó sẽ không có ý nghĩa gì khác), và bây giờ là lúc điều này trở nên khó khăn hơn ...
Hãy nói rằng tôi muốn trả tối đa 4
, liệt kê tất cả các bội số có thể có trong 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);
Mang lại đầu ra sau:
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
)
)
Vấn đề
Nếu tôi chọn chơi số tiền tối đa có sẵn ( 4
) tôi sẽ phải đặt cược với hai lần nhân đôi, nếu tôi sử dụng thuật toán giả mà tôi đã mô tả ở trên, tôi sẽ kết thúc với gợi ý đặt cược sau:
match #1
=>X1
match #2
=>2
match #3
=>12
Điều này có vẻ không tối ưu khi so sánh với đặt cược ba chi phí 3
và không chắc chắn hơn:
match #1
=>X12
match #2
=>2
match #3
=>2
Ví dụ trên đạt được mức độ liên quan cao hơn nữa nếu bạn cho rằng match #3
tỷ lệ cược có thể là:
$game['match #3'] = array // stdev = 0.4714
(
'1' => 0.0, // 0% home wins
'X' => 0.0, // 0% draw
'2' => 1.0, // 100% away wins
);
Trong trường hợp này tôi sẽ lãng phí gấp đôi không có lý do chính đáng.
Về cơ bản, tôi chỉ có thể chọn đặt cược lớn nhất (có thể ngu ngốc) và không đặt cược thông minh nhất, lớn nhất .
Tôi đã đập đầu vào tường trong vài ngày nay, hy vọng tôi có được một loại hiển linh nhưng cho đến nay tôi chỉ có thể đưa ra hai giải pháp nửa [xấu-]:
1) Vẽ một "đường"
Về cơ bản tôi sẽ nói rằng các trận đấu có stdev thấp hơn một giá trị cụ thể sẽ là gấp ba, các trận đấu với stdev cao hơn sẽ là cược đôi và các cược đơn còn lại.
Tất nhiên, vấn đề với điều này là tìm ra các ranh giới cụ thể phù hợp - và ngay cả khi tôi tìm thấy các giá trị hoàn hảo cho đặt cược "thông minh nhất", tôi vẫn không biết liệu mình có đủ tiền để chơi cược được đề xuất hay không Tôi có thể đặt cược thậm chí còn lớn hơn (cũng thông minh) ...
2) Bruteforce
Tôi đã nảy ra ý tưởng này trong khi viết câu hỏi này và tôi biết nó sẽ không có ý nghĩa hoàn hảo trong bối cảnh tôi mô tả nhưng tôi nghĩ tôi có thể làm cho nó hoạt động bằng cách sử dụng các số liệu hơi khác nhau. Về cơ bản, tôi có thể làm cho chương trình đề nghị cược (# cược ba và kép) cho mỗi số tiền có thể có của tiền tôi có thể chơi (từ 1
để 4
trong ví dụ của tôi), áp dụng các giả thuật toán tôi đã mô tả ở trên và tính toán giá trị bảng xếp hạng toàn cầu (một cái gì đó như % of symbols * match stdev
- tôi biết, nó không có ý nghĩa gì).
Đặt cược với thứ hạng cao nhất (bao gồm sự không chắc chắn) sẽ là đặt cược được đề xuất. Vấn đề với cách tiếp cận này (bên cạnh thực tế là nó chưa có ý nghĩa gì) là các trò chơi mà chương trình của tôi sẽ hoạt động không giới hạn ở 3 trận đấu và số lần kết hợp đặt cược đôi và ba cho các trận đấu đó sẽ là thực chất cao hơn
Tôi cảm thấy như có một giải pháp tao nhã, nhưng tôi không thể nắm bắt được ...
Bất kỳ trợ giúp bẻ khóa vấn đề này được đánh giá rất cao, cảm ơn.
Dường như có một số nhầm lẫn liên quan đến vấn đề của tôi, tôi đã giải quyết vấn đề này trong câu hỏi này và cả trong các bình luận nhưng việc giải thích sai dường như vẫn chiếm ưu thế, ít nhất là đối với một số người.
Tôi cần biết tôi sẽ chơi bao nhiêu cược ba, đôi và đơn cho một trò chơi cụ thể (tất cả các trận đấu). Tôi đã biết những biểu tượng nào tôi muốn chơi bằng cách xem từng trận đấu.