我有一个问题,可能分为两个问题;我试图找到的数学理论的名称是什么,以及如何在C#中最有效地完成。
基本上,我有一个问题,我正在计算正确猜测5+游戏结果的累积几率。
到目前为止,我构建我的程序的方式是将比赛及其各自的赔率输入到系统中,此时代码将它们组合成一个列表,其中包含所有比赛,获胜者和发生的可能性。 ;这是迭代完成的:
foreach (var game in games)
{
gamesList.Add(new GameBet
{
Home = game.Home,
Away = game.Away,
BetResult = game.GameResult,
Odds = game.Odds
});
}
使用以下内容将信息添加到游戏列表中:
gamesAndOdds.Add(Result.Create(Teams.Russia, Teams.Slovakia, GameResult.Home, (decimal)2.37));
gamesAndOdds.Add(Result.Create(Teams.Russia, Teams.Slovakia, GameResult.Away, (decimal)3.50));
gamesAndOdds.Add(Result.Create(Teams.Russia, Teams.Slovakia, GameResult.Tie, (decimal)3.2));
基本上我现在有一个包含我想要计算的所有游戏的大清单,以及3种不同可能性的几率。
现在,我的问题归结为我如何才能看出哪些游戏/结果会提供最高的累积赔率;即哪个赔率一起计算得出我的奖金最高倍数。
目前我已经实现了一个非常嵌套的ForEach循环结构:
for (var spain = 0; spain < 3; spain++)
{
for (var ireland = 0; ireland < 3; ireland++)
{
for (var belg = 0; belg < 3; belg++)
{
for (var aust = 0; aust < 3; aust++)
{
for (var port = 0; port < 3; port++)
{
counter++;
var spainOdd = gamesList.First(x => (int)x.BetResult == spain && x.Home == Teams.Russia);
var ireOdd = gamesList.First(x => (int)x.BetResult == ireland && x.Home == Teams.Ukraine);
var belgOdd = gamesList.First(x => (int)x.BetResult == belg && x.Home == Teams.France);
var austOdd = gamesList.First(x => (int)x.BetResult == aust && x.Home == Teams.England);
var portOdd = gamesList.First(x => (int)x.BetResult == port && x.Home == Teams.Germany);
var totalOdd = spainOdd.Odds * ireOdd.Odds * belgOdd.Odds * austOdd.Odds * portOdd.Odds;
multipliers.Add(totalOdd);
var bets = new List<GameBet>() { spainOdd, ireOdd, belgOdd, austOdd, portOdd };
BetList.Add(new BetList() { Bets = bets, Odds = totalOdd });
}
}
}
}
}
这确实给了我结果,因为这是一个小项目,计算时间并不那么紧迫;但作为一个思想实验,我将如何以更通用的方式做到这一点? (我很清楚投注是一件可怕的事情,可能不会盈利,这纯粹是为了思考实验)