【问题标题】:Prize distribution algorithm to handle ties处理平局的奖金分配算法
【发布时间】:2016-12-22 11:57:33
【问题描述】:

我正在尝试提出一种奖金分配算法,该算法可以可扩展地处理不同数量的玩家并考虑平局,即万一参赛者处于同一位置。

这是我目前所拥有的:

Distribution Formula        
P=((1-d)/1-d^n)*d^(p-1))*A      

Where:      
P   Prize   
n   Number of winners   
A   Total amout of money to share   
d   Distribution constant >0<1  
p   Position or rank of the user

在Excel中建模我得到以下结果:

Constants

A   50000
d   0.4
n   15

样本数据

无关联分发

Position (p)    Player  Prize (P)
1   A   30000.03221
2   B   12000.01288
3   C   4800.005154
4   D   1920.002062
5   E   768.0008246
6   F   307.2003299
7   C   122.8801319
8   D   49.15205278
9   E   19.66082111
10  F   7.864328444
11  C   3.145731378
12  D   1.258292551
13  E   0.5033170204
14  F   0.2013268082
15  C   0.08053072327
**Total     50000**

有联系的分布

Position (p)    Player  Prize (P)
1   A   30000.03221
1   B   30000.03221
2   C   12000.01288
3   D   4800.005154
4   E   1920.002062
4   F   1920.002062
5   C   768.0008246
6   D   307.2003299
7   E   122.8801319
8   F   49.15205278
9   C   19.66082111
10  D   7.864328444
11  E   3.145731378
12  F   1.258292551
13  C   0.5033170204
**Total 81919.75242**   

问题

不是我的第二个数据与领带的总分发奖品超过50000这是我想分享的

期望的结果

处于相同位置的用户应获得等量的奖金,并将奖品妥善分配给其他用户。支付的总金额不应超过预期金额。

如何改进上述功能才能达到上述效果。

【问题讨论】:

  • 为什么不简单地将 (30000+12000)/2 用于 A 和 B,将 (768+307)/2 用于 E 和 F?
  • 问题在于,如果我们有这么多的关系,如果我们简单地划分机会,那么在他们之后的人可能比领导者拥有更多的份额。我正在尝试考虑一种可以很好地适应不同数据集的分布
  • 按照我建议的方法,排名靠后的玩家不可能比排名靠前的玩家获得更多。如果前 10 名玩家打成平手,并且他们都获得了前十名奖金的平均值,那么第十名玩家的奖金会增加;这意味着他仍然比排名第十的球员获得更多。
  • @m69 你是对的,我没有很好地测试它。我确保我的 n 值具有不同的位置,并在该点与 T(ties) 的数量平分奖金。

标签: python algorithm math statistics game-engine


【解决方案1】:
  1. MaxT(默认值1)是各种绑定位置的所有绑定中的最大值
  2. 选择d &lt;= 1/MaxT

    更新:例如:

    1   A   30000.03221 |
    1   B   30000.03221 |  Tie count T1 = 2
    2   C   12000.01288
    3   D   4800.005154
    4   E   1920.002062 | 
    4   F   1920.002062 |  Tie count T2 = 2
    

    maxT = {T1, T2, .. Tn} 的最大值 = 最大值 {2, 2} = 2

  3. 为每个独特的位置计算一次奖金

  4. 对于并列位置,只需将第 2 步中计算的奖金除以编号即可。职位的平局数 (Tn)(例如:职位 1:30000/2.0)

该方案确保总和为A,并且位置的奖金值小于上位置的奖金值,与平局无关。

【讨论】:

  • 感谢@vcp 的输入。我仍然没有得到MaxT 部分。请帮助我澄清第 1 步和第 2 步。在这种情况下,您指的是 MaxT 什么?
  • @felixcheruiyot 我刚刚添加了示例来解释 maxT
  • @vpc 我花了很多时间来解决这个问题,但最终我明白了。我缺少的是确保 n 在位置方面是不同的。终于我搞定了,效果很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-30
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多