Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm elo的起始值_Algorithm_System_Rating - Fatal编程技术网

Algorithm elo的起始值

Algorithm elo的起始值,algorithm,system,rating,Algorithm,System,Rating,最近制作了一个锦标赛支架,玩家可以报名参加,并有机会获得冠军。如你所见,这是一张照片: 一旦锦标赛结束,我计划将这些奖金转化为排名。因此,“阿喀琉斯”将排名第一,因为他在锦标赛中表现最好,然后第二将是“RJG2”,依此类推。锦标赛等级将转换为排名的原因是因为现在我想给球员创造与其他球员比赛的机会。这一点很重要,因为即使锦标赛等级有效,它也不包含球员之间每一场可能的比赛的结果。这很好,锦标赛等级只是给其他人一个基本的代表谁是最好的/最差的。然而,一旦锦标赛等级转换为排名,新用户也有机会注册,允许

最近制作了一个锦标赛支架,玩家可以报名参加,并有机会获得冠军。如你所见,这是一张照片:

一旦锦标赛结束,我计划将这些奖金转化为排名。因此,“阿喀琉斯”将排名第一,因为他在锦标赛中表现最好,然后第二将是“RJG2”,依此类推。锦标赛等级将转换为排名的原因是因为现在我想给球员创造与其他球员比赛的机会。这一点很重要,因为即使锦标赛等级有效,它也不包含球员之间每一场可能的比赛的结果。这很好,锦标赛等级只是给其他人一个基本的代表谁是最好的/最差的。然而,一旦锦标赛等级转换为排名,新用户也有机会注册,允许更多玩家相互竞争。现在,在开始排名部分之前,我想尝试在比赛中使用Elo排名。我的问题是,我需要在比赛中分配这些球员的分数。这是很棘手的,因为如果我不小心,我的K值可能会打乱事情的顺序。这是我的桌子:

#1 Achilles
#2 rjg 2
#3 gg
#4 beta 1
#5 dfgsdf
#6 test2
#7 rjgtest
#8 rocket
我需要给每个球员分配“分数”,以反映排名。这意味着#1阿喀琉斯得分最多,而#2是rjg2,依此类推。。。然而,以Elo的工作方式,我不知道要分配多少分数。如果我做得太远,球员们将永远没有机会在排名中提升,但如果我做得太小,排名将不断变化

例如,如果我这样设置我的表:

1  1000
2  900
3  800
4  700
5  600
6  500
7  400
8  300
9  200
10 100 
其中#1得1000分#2得900分,依此类推。如果排名10胜排名1,那显然是不太可能的。所以,当我对elo进行计算时,会发生以下情况:

因此,如果我这样做(根据解释的方式),让我们假设我的排名是10对1。根据上述网站,我的公式是:

R' = R + K * (S - E)
而#10分只有100分,而#1分有1000分。 因此,在进行数学排名后,排名10的预期击败值为#1:

0.55%是非常低的,而且是有道理的,排名10的人几乎没有机会打败排名1的人。然而,如果他要打败他,结果如下:

 100 + 32 * (1 - 0.0055)
 = 131.824
他在击败排名第一的球员时只获得31分。这显然不起作用,但我可以减少分数范围或增加我的K系数


有人有什么建议可以让这项工作顺利进行吗?或者建议我用另一种方式对我的球员进行排名?

我恐怕不太了解Elo评分,但我知道选择合适的K值可能会有问题

我知道通常K值会根据玩家玩过多少游戏而改变。一个已经玩了很多游戏的玩家会得到一个较低的K值,所以他们的等级不会有太大的变化(因为我们对他们的等级更确定,我们希望它保持相当稳定)。同样,一个没有玩过很多游戏的玩家会得到更高的K值(我们对他们的评级不太确定,所以我们不介意它移动得更多)

另一种方法是使用评级系统,该系统试图结合我们对球员评级的不确定性的测量。例如,Glicko评级系统或微软的TrueSkill算法。这些系统建立了自己对玩家技能水平的可变性(或不确定性)的估计,所以您不需要设置K值

有一个非常好的TrueSkill at的Python实现,由Heungsub Lee编写,并提供了大量关于如何使用该库的示例。一名球员的评级包括一个平均值(代表其估计技能)和一个标准差(代表我们对其技能的不确定性)


TrueSkill被Microsoft用于在许多Xbox游戏上进行配对,因此应该非常适合您匹配具有类似能力的玩家。

我理解K值对Elo非常重要。然而,我认为它在我的系统中没有那么重要。意思是,我不认为我必须让它成为不同球员的变量,我认为我可以让它在所有球员身上保持不变。但是,我正在考虑任何可能的选择。TrueSkill看起来很棒,但不像Elo那么容易实现。谢谢你给我看这个。把
K
调高一点。如果他能够击败1号,他肯定会再赢几次。。。你真的不希望仅仅因为一场比赛就出现巨大的摆动。
 100 + 32 * (1 - 0.0055)
 = 131.824