投注和特别赢得投注的算法?

时间:2015-02-11 19:25:01

标签: python algorithm math python-3.x

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

# 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)
}

一旦比赛结束,我希望根据他们下注的数量来划分每个玩家的总底池数。 所以在上面的场景中,如果蓝队要获胜,那么身份 3 的玩家只会获得身份 7 的玩家的五分之一,玩家 12 13 一无所获。

我不确定如何计算每位玩家应该获得多少钱,我是怎么做到的? 我认为我应该以某种方式得到两队之间的因素,并且增加球员的数量。打赌这个数额?

1 个答案:

答案 0 :(得分:2)

这称为pari-mutuel payout。你只需按照他们的赌注比例在赢家中划分总金额(如果你是赛马场,那么在扣除10%以上之后: - (

首先获得总赌注:

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