Algorithm 如何在具有排名结果的游戏中组织赌注/奖品? 问题
我正在制作一个多人游戏,玩家通过他们的最终得分排名。我想根据以下数据计算出他们最终赢/输了多少钱:Algorithm 如何在具有排名结果的游戏中组织赌注/奖品? 问题,algorithm,math,multiplayer,gambling,Algorithm,Math,Multiplayer,Gambling,我正在制作一个多人游戏,玩家通过他们的最终得分排名。我想根据以下数据计算出他们最终赢/输了多少钱: 他们的排名/得分 他们的赌注大小 例子 有一场5人的比赛,结果是这样的: 1. Ben, score 2115, bet 100 2. Jim, score 1856, bet 250 3. Lenny, score 1512, bet 30 4. Martha, score 1220, bet 70 5. Richard, score 987, bet 50 思想 现在,我如何决定谁能拿到多少
1. Ben, score 2115, bet 100
2. Jim, score 1856, bet 250
3. Lenny, score 1512, bet 30
4. Martha, score 1220, bet 70
5. Richard, score 987, bet 50
思想
现在,我如何决定谁能拿到多少钱?对我来说唯一显而易见的是,玩家1至少应该拿回他们的赌注,这样他们就不会输
我甚至不知道,在一个关键的情况下,两名玩家,排名第二的玩家的全部赌注都归赢家
我之所以希望考虑赌注的大小,是为了不让一个下注1枚硬币的玩家与另一个下注100枚硬币的玩家玩游戏,从而只冒1枚硬币的风险,而他们的潜在奖金是100。这对下注100枚硬币的玩家是不公平的,因为他们冒的风险是他们所能获得的100倍。我担心可能被滥用
理论上可能出现的另一个可疑情况是,球员最终的得分相同。如果没有或相等的赌注,我们可以认为是平局,但是如果球员做出了不同的赌注呢?他们处于不平等的条件下,有着不平等的风险,但取得了相同的结果,所以这对他们中的一个来说不是一场胜利吗
可能的解决方案
我在考虑一个选项,让“上半部分”的球员成为赢家,“下半部分”的球员成为输家,而可能的中间部分球员成为抽屉。然后,在上面的游戏中,莱尼是一个抽屉,他赢回了30英镑的赌注,不输也不赢。玛莎和理查德输掉了他们的赌注,总共120人被赢的本和吉姆平分。但也存在一些问题:
- Ben排名第1,这给了他更多的理由,但Jim的赌注高出2.5倍,而他的分数只比Jim低约10%。谁应该得到更多,本还是吉姆
- 如果Richard和Martha都只下注1枚硬币,甚至0枚,会怎么样?这使得Ben和Jim都陷入了不公平的境地,因为他们的风险远远高于潜在收益
p.S.如果这个问题不完全适合堆栈溢出,那么很抱歉。在我看来,这实际上是一个关于处理特定数据的算法/公式的编程问题。我会考虑在其他地方问我是否有一个很好的建议。 < P>与底部赌注匹配顶级赌注。重复一遍 在平局的情况下,将他们的赌注集中起来,计算出小组赢或输的金额,然后按比例将其与他们付出的金额分开。(如果结果参差不齐,则随机选择谁获得/失去最后一分。) 因此,在您的示例中,我们将这样做:
1. Ben, score 2115, bet 100
2. Jim, score 1856, bet 250
3. Lenny, score 1512, bet 30
4. Martha, score 1220, bet 70
5. Richard, score 987, bet 50
将Ben
与Richard
匹配Ben赢得50分,Richard退出
1. Ben, score 2115, bet 50
2. Jim, score 1856, bet 250
3. Lenny, score 1512, bet 30
4. Martha, score 1220, bet 70
1. Jim, score 1856, bet 250
2. Lenny, score 1512, bet 30
3. Martha, score 1220, bet 20
1. Jim, score 1856, bet 230
2. Lenny, score 1512, bet 30
1. Jim, score 1856, bet 200
将Ben
与Martha
匹配Ben
50胜,然后退出
1. Ben, score 2115, bet 50
2. Jim, score 1856, bet 250
3. Lenny, score 1512, bet 30
4. Martha, score 1220, bet 70
1. Jim, score 1856, bet 250
2. Lenny, score 1512, bet 30
3. Martha, score 1220, bet 20
1. Jim, score 1856, bet 230
2. Lenny, score 1512, bet 30
1. Jim, score 1856, bet 200
将Jim
与Martha
匹配<代码>吉姆赢得20分,玛莎退出
1. Ben, score 2115, bet 50
2. Jim, score 1856, bet 250
3. Lenny, score 1512, bet 30
4. Martha, score 1220, bet 70
1. Jim, score 1856, bet 250
2. Lenny, score 1512, bet 30
3. Martha, score 1220, bet 20
1. Jim, score 1856, bet 230
2. Lenny, score 1512, bet 30
1. Jim, score 1856, bet 200
将Jim
与Lenny
匹配<代码>吉姆赢得30分,蓝尼退出
1. Ben, score 2115, bet 50
2. Jim, score 1856, bet 250
3. Lenny, score 1512, bet 30
4. Martha, score 1220, bet 70
1. Jim, score 1856, bet 250
2. Lenny, score 1512, bet 30
3. Martha, score 1220, bet 20
1. Jim, score 1856, bet 230
2. Lenny, score 1512, bet 30
1. Jim, score 1856, bet 200
我们完了。奖励的最终划分为:
1. Ben, score 2115, has 200
2. Jim, score 1856, has 300
3. Lenny, score 1512, has 0
4. Martha, score 1220, has 0
5. Richard, score 987, has 0
现在赢的钱一般都归上半场。没有人会比他们付出的更多,也没有人会比付出的更多。将最高赌注与最低赌注相匹配。重复一遍
在平局的情况下,将他们的赌注集中起来,计算出小组赢或输的金额,然后按比例将其与他们付出的金额分开。(如果结果参差不齐,则随机选择谁获得/失去最后一分。)
因此,在您的示例中,我们将这样做:
1. Ben, score 2115, bet 100
2. Jim, score 1856, bet 250
3. Lenny, score 1512, bet 30
4. Martha, score 1220, bet 70
5. Richard, score 987, bet 50
将Ben
与Richard
匹配Ben赢得50分,Richard退出
1. Ben, score 2115, bet 50
2. Jim, score 1856, bet 250
3. Lenny, score 1512, bet 30
4. Martha, score 1220, bet 70
1. Jim, score 1856, bet 250
2. Lenny, score 1512, bet 30
3. Martha, score 1220, bet 20
1. Jim, score 1856, bet 230
2. Lenny, score 1512, bet 30
1. Jim, score 1856, bet 200
将Ben
与Martha
匹配Ben
50胜,然后退出
1. Ben, score 2115, bet 50
2. Jim, score 1856, bet 250
3. Lenny, score 1512, bet 30
4. Martha, score 1220, bet 70
1. Jim, score 1856, bet 250
2. Lenny, score 1512, bet 30
3. Martha, score 1220, bet 20
1. Jim, score 1856, bet 230
2. Lenny, score 1512, bet 30
1. Jim, score 1856, bet 200
将Jim
与Martha
匹配<代码>吉姆赢得20分,玛莎退出
1. Ben, score 2115, bet 50
2. Jim, score 1856, bet 250
3. Lenny, score 1512, bet 30
4. Martha, score 1220, bet 70
1. Jim, score 1856, bet 250
2. Lenny, score 1512, bet 30
3. Martha, score 1220, bet 20
1. Jim, score 1856, bet 230
2. Lenny, score 1512, bet 30
1. Jim, score 1856, bet 200
将Jim
与Lenny
匹配<代码>吉姆赢得30分,蓝尼退出
1. Ben, score 2115, bet 50
2. Jim, score 1856, bet 250
3. Lenny, score 1512, bet 30
4. Martha, score 1220, bet 70
1. Jim, score 1856, bet 250
2. Lenny, score 1512, bet 30
3. Martha, score 1220, bet 20
1. Jim, score 1856, bet 230
2. Lenny, score 1512, bet 30
1. Jim, score 1856, bet 200
我们完了。奖励的最终划分为:
1. Ben, score 2115, has 200
2. Jim, score 1856, has 300
3. Lenny, score 1512, has 0
4. Martha, score 1220, has 0
5. Richard, score 987, has 0
现在赢的钱一般都归上半场。没有人会比他们所能承受的更多。这里有一个关于“上半场”赢家和“下半场”输家的变化(以“中间”作为平局)。输家的赌注就是赌注
以最小的中奖赌注,乘以中奖人数。如果这个数量超过罐子里的数量,那么这个数量就是罐子里的任何东西。现在,按照得奖者的得分比例将该金额分配给他们。移除赌注最小的玩家。重复一遍
如果锅里还有钱,这笔钱将按照输家的赌注比例分配给输家
例如:
name: Ben Jim Len Mar Ric
bets: 100 250 30 70 50
score: 2115 1856 1512 1220 987
pot: 120
minimum winning bet times number of winners: 100 * 2 = 200
amount to split: 120 (since 120<200)
Ben gets 120 * 2115 / (2115+1856) = 64
Jim gets 120 * 1856 / (2115+1856) = 56
Cash after the game is finished:
name: Ben Jim Len Mar Ric
cash: 164 306 30 0 0
这里有一个关于“上半场”赢家和“下半场”输家的变体(以“中间”作为平局)。输家的赌注就是赌注
以最小的中奖赌注,乘以中奖人数。如果这个数量超过罐子里的数量,那么这个数量就是罐子里的任何东西。现在,按照得奖者的得分比例将该金额分配给他们。移除赌注最小的玩家。重复一遍
如果锅里还有钱,这笔钱将按照输家的赌注比例分配给输家
例如:
name: Ben Jim Len Mar Ric
bets: 100 250 30 70 50
score: 2115 1856 1512 1220 987
pot: 120
minimum winning bet times number of winners: 100 * 2 = 200
amount to split: 120 (since 120<200)
Ben gets 120 * 2115 / (2115+1856) = 64
Jim gets 120 * 1856 / (2115+1856) = 56
Cash after the game is finished:
name: Ben Jim Len Mar Ric
cash: 164 306 30 0 0
我真的很喜欢它,如果没有其他东西出现,我可能会使用它。我能看到的唯一缺点是收益仅限于双倍赌注。有没有可能调整奖励的方式?@Helyrk当你在顶部和底部比赛时,每个获胜点对应多少个失败者的分数?如果你将其设定为2:1的比例,那么人们可以将赌注增加三倍(a)