处理平局的奖品分配算法

2024-09-30 22:24:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图想出一种奖金分配算法,它可以伸缩地处理不同数量的选手和平局因素,也就是说,万一参赛者落在同一位置。在

到目前为止,我得到的是:

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中建模,我得到以下结果:

^{pr2}$

样本数据

无约束分布

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

期望结果

处于同一位置的用户应获得相等数量的奖品,并将奖品分发给其他用户。支付的总额不应超过预定数额。在

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


Tags: of数据用户算法数量positiondistributiontotal
1条回答
网友
1楼 · 发布于 2024-09-30 22:24:36
  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,且一个位置的奖赏值小于上层位置的奖赏值,且与联系无关。在

相关问题 更多 >