我有一场比赛,两个队(红队和蓝队)互相对抗。
观众可以对两支队伍中的一支进行下注,在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的球员的五分之一,而ID为12和13的球员什么也得不到。
我不知道如何计算每个玩家应该得到多少钱,我怎么做到的?
我想我应该把这两支球队之间的因素搞清楚,然后把球员的赌注乘以这个数?

最佳答案

这叫做apari-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

07-24 20:31