用于处理平局的奖品分配算法
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,这是我想分享的
想要的结果
处于相同位置的用户应该获得同等数量的奖品,并将奖品很好地分配给其他用户。支付的总金额不应超过预期的金额。
如何改进上面的功能才能达到上面的效果
- 令
MaxT
(默认值 1)是各种并列位置的所有并列中的最大值
选择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
为每个唯一位置计算一次奖金
- 对于并列位置,只需将步骤#2 中计算的奖金除以编号即可。位置 (Tn) 的平局数(示例:对于位置 1:30000/2.0)
此方案确保总计为 A,并且一个位置的奖金值小于上一个位置的奖金值,与平局无关。
我正在尝试提出一种奖品分配算法,该算法可以可扩展地处理不同数量的玩家和关系因素,即以防参赛者处于同一位置。
这是我目前拥有的:
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,这是我想分享的
想要的结果
处于相同位置的用户应该获得同等数量的奖品,并将奖品很好地分配给其他用户。支付的总金额不应超过预期的金额。
如何改进上面的功能才能达到上面的效果
- 令
MaxT
(默认值 1)是各种并列位置的所有并列中的最大值 选择
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
为每个唯一位置计算一次奖金
- 对于并列位置,只需将步骤#2 中计算的奖金除以编号即可。位置 (Tn) 的平局数(示例:对于位置 1:30000/2.0)
此方案确保总计为 A,并且一个位置的奖金值小于上一个位置的奖金值,与平局无关。