最近制作了一个锦标赛支架,玩家可以报名参加并有机会获得胜利点。如您所见,这是一张图片:
比赛结束后,我计划将这些奖金转换为排名。所以,结果," Achilles"因为他在锦标赛中表现最好,所以排名第一,然后#2将是" rjg 2",依此类推。锦标赛支架将被转换为排名的原因是因为现在我想让玩家有机会与其他玩家进行比赛。这很重要,因为即使比赛支架有效,它也不包含球员之间每次可能比赛的结果。没关系,锦标赛的重点在于给其他人一个基本的代表,表明谁是最好/最差的。然而,一旦锦标赛支架转换为排名,新用户也有机会注册,允许更多的玩家互相竞争。现在,在我开始排名之前,我想尝试在比赛中使用Elo排名。我的问题是,我需要在锦标赛积分中分配这些球员。这很棘手,因为如果我不小心我的K值可能会弄乱事物的顺序。这是我的表:
#1 Achilles
#2 rjg 2
#3 gg
#4 beta 1
#5 dfgsdf
#6 test2
#7 rjgtest
#8 rocket
我需要分配每个玩家"积分"反映排名。这意味着#1 Achilles将获得最多分,而#2将是rjg2等等......但是,随着Elo的工作方式,我不知道要分配多少分。如果我这样做太过分了,那么球员们就没有机会在排名上升,但如果我这样做太小,那么排名就会不断变化。
例如,如果我像这样设置我的表:
1 1000
2 900
3 800
4 700
5 600
6 500
7 400
8 300
9 200
10 100
#1将获得1,000分,#2将获得900分,依此类推。如果排名#10超过排名第一,那么显然非常不可能。所以,当我用elo进行数学计算时,会发生以下情况:
所以,如果我这样做(基于解释here的方式),让我说我排名#10面对排名#1。根据上面的网站,我的公式是:
R' = R + K * (S - E)
并且#10的评级仅有100分,其中#1有1,000。 因此,在进行数学排名后,#10击败#1的预期值为:
1 / [ 1 + 10 ^ ( [1000 - 100] / 400) ]
= 0.0055%
0.55%非常低且有意义,排名#10几乎没有机会击败像排名第一的人。但是,如果他要击败他,结果就是:
100 + 32 * (1 - 0.0055)
= 131.824
在击败排名第一的球员时,他只能获得31分。这显然不会起作用,但我可以减少积分范围或增加我的K因子。
有没有人有任何建议让这项工作?或者也许建议我以不同的方式对我的球员进行排名?
答案 0 :(得分:0)
我担心我不太了解Elo评级,但我知道选择合适的K值可能会有问题。
我知道K值通常会根据玩家玩了多少游戏而改变。玩过许多游戏的玩家获得的K值较低,因此他们的评分不会有太大变化(因为我们对他们的评分更加确定,我们希望它保持相当稳定)。同样地,没有玩过很多游戏的玩家会获得更高的K值(我们对他们的评价不太确定,所以如果动作更多,我们不会介意。)
一种替代方法是使用评级系统,该系统试图结合我们对玩家评级的不确定性的度量。例如,Glicko评级系统或Microsoft的TrueSkill算法。这些系统建立了他们自己对玩家技能水平变化(或不确定性)的估计,因此您不需要设置K值。
在http://trueskill.org有一个非常好的TrueSkill的Python实现,由Heungsub Lee编写,有很多关于如何使用库的例子。玩家的评级包括平均值(代表他们的估计技能)和标准偏差(代表我们对他们技能的不确定性)。
微软使用TrueSkill进行许多Xbox游戏的配对,所以应该非常适合你匹配类似能力的玩家。