用于处理平局的奖品分配算法

Prize distribution algorithm to handle ties

我正在尝试提出一种奖品分配算法,该算法可以可扩展地处理不同数量的玩家和关系因素,即以防参赛者处于同一位置。

这是我目前拥有的:

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,这是我想分享的

想要的结果

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

如何改进上面的功能才能达到上面的效果

  1. MaxT(默认值 1)是各种并列位置的所有并列中的最大值
  2. 选择d <= 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 = max of {T1, T2, .. Tn} = max {2, 2} = 2

  3. 为每个唯一位置计算一次奖金

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

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