使用C#计算足球比赛结果的几率

时间:2016-06-15 09:41:02

标签: c# probability

我有一个问题,可能分为两个问题;我试图找到的数学理论的名称是什么,以及如何在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 });
                }
            }
        }
    }
}

这确实给了我结果,因为这是一个小项目,计算时间并不那么紧迫;但作为一个思想实验,我将如何以更通用的方式做到这一点? (我很清楚投注是一件可怕的事情,可能不会盈利,这纯粹是为了思考实验)

0 个答案:

没有答案