【发布时间】: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