投注算法,特别是赢得赌注的算法?

Algorithm for betting and particularly winning the bet?

我有一个游戏,两队(红队和蓝队)互相对抗。 观众可以对两支球队之一下注,向 bets 字典添加新赌注,最终看起来像这样(下注后):

# Example of what 'bets' dict might look like mid-game
bets = {
    # player_id: (team, amount),
    12: (TEAM_RED, 500),
    13: (TEAM_RED, 1200),
    3: (TEAM_BLUE, 300),
    7: (TEAM_BLUE, 1500)
}

游戏结束后,我希望根据每个玩家下注的多少来分配每个玩家的总底池。 所以在上面的场景中,如果蓝队获胜,id 为 3 的玩家只能得到 id 为 7 的玩家的五分之一,玩家 1213 什么也得不到。

我不确定如何计算每个玩家应该得到多少钱,我是怎么做到的? 我想我应该以某种方式计算出两支球队之间的因数,然后将球员的赌注乘以该金额?

这叫做pari-mutuel payout。您只需按照获胜者的赌注比例将总赌注分配给获胜者(如果您是赛马场,则在从顶部抽取 10% vig 之后:-(

所以先求总投注金额:

total = sum(x[1] for x in bets.values());

则正确投注总数:

wtotal = sum(x[1] for x in bets.values() if x[0] == TEAM_BLUE);

然后通过投注者:

for p in bets.keys():
    if bets[p][0] == TEAM_BLUE:
        payout = total * bets[p][1] / wtotal