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) "선"을 그리십시오
기본적으로 나는 특정 값보다 낮은 stdev와의 경기는 트리플이고, stdev와의 경기는 두 배의 베팅이고 나머지는 단일 베팅이라고 말합니다.
물론 이것의 문제는 적절한 특정 경계를 찾는 것입니다. 심지어 "가장 거친"베팅에 대한 완벽한 가치를 발견하더라도 제안 된 베팅을하기에 충분한 돈이 있는지 또는 여전히 더 큰 (또한 똑똑한) 내기를 만들 수 있습니다 ...
2) 무차별
이 질문을 작성하는 동안이 아이디어를 생각해 냈는데 설명 된 맥락에서 완벽하게 이해되지는 않지만 다소 다른 메트릭을 사용하여 작동시킬 수 있다고 생각합니다. 기본적으로,이 프로그램은 내가 (에서 재생할 수있는 돈의 모든 가능한 금액에 대한 베팅 (트리플 및 더블 베팅 #) 제안 만들 수 1
에 4
(뭔가 내가 위에서 설명한 의사 알고리즘을 적용하고 글로벌 순위 값을 계산하는 내 예제를) 처럼 % of symbols * match stdev
-나는 이해가되지 않습니다).
가장 높은 순위를 가진 베팅 (불확실성 포함)이 제안 된 베팅입니다. 이 접근법의 문제점 (아직 이해가되지 않는다는 사실 외에도) 내 프로그램이 작동 할 게임은 3 경기로 제한되지 않으며 해당 경기에 대한 더블 및 트리플 베팅 조합의 수는 실질적으로 더 높다.
나는 우아한 해결책이 있다고 생각하지만 그것을 이해할 수는 없습니다 ...
이 문제를 해결하는 데 도움을 주시면 감사하겠습니다.
내 문제와 관련하여 약간의 혼란이있는 것 같습니다.이 질문과 의견에서 이미이 문제를 해결했지만 적어도 일부에게는 오해가 여전히 우세한 것처럼 보입니다.
특정 경기 (모든 경기) 에 대해 얼마나 많은 트리플, 더블 및 싱글 베팅 을해야하는지 알아야 합니다 . 나는 각 경기를 개별적으로 보면서 어떤 심볼을 재생하고 있는지 이미 알고 있습니다.