0

问题

我正在制作一款多人游戏,玩家最终会根据他们的最终得分进行投注。我想根据以下情况计算出他们最终赢/输了多少钱:

  1. 他们的排名/分数;
  2. 他们的赌注大小。

例子

有一场比赛有 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 至少应该拿回他们的赌注,这样他们就不会输。

我什至不能说在 2 名玩家的危急情况下,排名第二的玩家的全部赌注都归于获胜者。

为什么我要考虑下注的大小是为了不让一个下注 1 个硬币的玩家与另一个下注 100 个硬币的玩家对抗,因此在他们的潜在奖金为 100 时只冒 1 个硬币的风险。这对那些下注 1 个硬币的玩家不公平。下注 100 个硬币,因为他们的风险是他们获得的风险的 100 倍。我害怕潜在的虐待。

理论上可能的另一个可疑情况是玩家最终得到相同的分数。如果没有或相等的赌注,我们可以认为这是平局,但如果玩家做出不同的赌注怎么办?他们处于不平等的条件下,面临​​着不平等的风险,却取得了相同的结果,所以这不是他们中的一个人的胜利吗?

可能的解决方案

我正在考虑一个选项,让“上半部分”玩家成为赢家,“下半部分”输家,并让可能的中间玩家成为抽屉。然后,在上面的游戏中,Lenny 是一个抽屉,拿回了他的 30 赌注,不输也不赢。Martha 和 Richard 输掉了他们的赌注,这 120 个赌注由获胜者 Ben 和 Jim 瓜分。但是有一些问题:

  • Ben 排名第一,这给了他更多的理由,但 Jim 的赌注高出 2.5 倍,而他的分数仅比 Jim 低约 10%。谁应该得到更多,本还是吉姆?
  • 如果理查德和玛莎都只下注 1 个硬币,甚至 0 个呢?当本和吉姆的风险远高于潜在收益时,这会使本和吉姆陷入不公平的境地。

我试图研究其他游戏中的投注系统,比如扑克、轮盘赌、赛马,但没有什么能完全符合这种情况。

在最坏的情况下,我可能会考虑奖励“房子”中的玩家,而不是其他玩家失去的东西。但我想把它作为玩家之间的游戏,而不是针对房子。

PS抱歉,如果问题不完全适合 Stack Overflow。在我看来,这实际上是一个关于处理特定数据的算法/公式的编程问题。如果我在哪里得到一个好的建议,我会考虑在其他地方询问。

4

2 回答 2

1

将最高赌注与最低赌注匹配。重复。

在平局的情况下,将他们的赌注集中起来,计算出小组赢或输了多少,然后按比例分配他们给了多少。(如果结果不均匀,随机选择谁获得/失去最后一分。)

所以在你的例子中,我们会这样做:

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与匹配RichardBen赢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

Ben与匹配MarthaBen赢得50并退出。

1. Jim, score 1856, bet 250
2. Lenny, score 1512, bet 30
3. Martha, score 1220, bet 20

Jim与匹配MarthaJim赢得20并Martha退出。

1. Jim, score 1856, bet 230
2. Lenny, score 1512, bet 30

Jim与匹配LennyJim赢得 30 并Lenny退出。

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

而现在的奖金通常会流向上半部分。没有人会比他们承受的更多或失去更多。

于 2020-05-01T22:46:48.053 回答
1

这是“上半场”赢家和“下半场”输家(以“中间”为平局)的变体。输家下注的钱就是底池。

取最小的获胜赌注,并乘以获胜者的数量。如果该数量多于罐中的数量,则该数量是罐中的任何数量。现在按照他们的得分比例在获胜者之间分配这个数额。删除下注最小的玩家。重复。

如果底池里还有钱,这些钱将按输家的赌注比例分配给输家。

例子:

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

示例 2:

name:   Ben  Jim   Lu    Tim  Mar Ric 
bets:   100  250   10    120  200  80
score: 2115 1856 1512   1220  987 642

pot: 400
minimum winning bet times number of winners: 10 * 3 = 30
winners total score: 2115+1856+1512 = 5483
Ben gets 30 * 2115/5483 = 12
Jim gets 30 * 1856/5483 = 10
Lu  gets 30 * 1512/5483 =  8
remove 10 from each winning bet, Lu is done

remaining pot: 370
minimum winning bet times number of winners: 90 * 2 = 180
winners total score = 2115+1856 = 3971
Ben gets 180 * 2115/3971 = 96
Jim gets 180 * 1856/3971 = 84
remove 90 from each winning bet, Ben is done

remaining pot: 190
minimum winning bet times number of winners: 150 * 1 = 150
Jim gets 150

remaining pot: 40
total bets by the losers: 400
Tim gets 40 * 120/400 = 12
Mar gets 40 * 200/400 = 20
Ric gets 40 *  80/400 =  8

Cash after the game is finished:
name:   Ben  Jim   Lu    Tim  Mar Ric 
cash:   208  494   18     12   20   8
于 2020-05-02T01:15:00.167 回答