Elo rating system,是由美籍物理教授Arpad Elo发明用于计算在大型连续对抗比赛中反应参赛者水平的一种方法。最初是使用在国际象棋中,后续被一些网游与电子竞技产业推广使用,游戏界比较著名的应用有:WOW(魔兽世界),11平台DOTA天梯,DOTA2,LOL(英雄联盟),CSGO(反恐精英:全球攻势)。
ELO算法核心
总体来说,玩家的ELO值取决于他的对手强弱与胜负关系(其实这是废话,但是又不得不说)。那么量化的标准如下:
RA – 玩家A的积分 RB – 玩家B的积分
那么A对B的胜率:
B对A的胜率:
我们可以得到,A玩家与B玩家胜率和为1,那么根据胜率比赛有且只有三种结果胜、负、平(平局不是必须的,根据实际需要)。可用= 1表示胜、0表示负、0.5表示平局这三种情况的参数取值。
最后对于A玩家计算积分变化的公式:
其中K值是一个常量系数,按照国际象棋里的标准,K值对于大师选手为16,对于一般选手是32,后文会详细说明K值的具体作用。
ELO算法演算
我们假设RA – 1500 RB – 1800
那么= 0.15 ,我们取K = 32。若A击败了B,代入公式:
RA = 1500 + 32(1.0 – 0.195) = 1527
RB = 1800 + 32(0.0 – 0.805) = 1773
最终玩家A的积分为1527(1500+27),玩家B的积分为1773(1800-27)
ELO关于K值的选取
K值的大小直接关系到一局游戏结束,根据胜负关系计算出的积分变化值。
简单举例就是,在上节的演算中,若K = 16,那么最终结果则是RA = 1514,RB = 1786。
那么K值如何选取?这里节选一段国际象棋的实例:
K = 40,未满18周岁新加入的选手,并且参加比赛次数小于30场,积分低于2300。
K = 20,积分一直低于2400。
K = 10,超过30场比赛,并且积分高于2400。
先简单说明一下这里提及“积分”的概念。
一般来说,每种类型的比赛都会附有一个初始分,比如11对战平台DOTA天梯初始分1100,魔兽世界早期竞技场初始分1500,DOTA2,LOL,CSGO的匹配估分。
为了满足所有参与比赛选手积分符合标准正态分布的特性,即低分段与高分段玩家相对较少,大量玩家集中在中层保证竞争性。
(我个人理解为一句话:好的游戏竞技或者体育竞技,一般都是易于上手,难于精通,所以低高分玩家相对较少,中层玩家较多)
而且积分能有效量化一个选手的实力,对评估排名是非常有利。
回到正题,K值如何来。根据比赛的实际需要来制定,举2个自己熟悉的例子:(感官猜测数据分析,若有不对之处请见谅)
魔兽世界:早期竞技场的K值应该在32(超过2200可能在16),队伍的积分即是匹配分,不太高的K值导致积分收敛性强,即积分2500+的积分已经排到参与人数前1%。积分的最高值更加取决参与人数。新版本的竞技场匹配分与实际积分已经分离,这样做主要是为了队伍更好的定位(高分队用更少的场次进入到自己的积分段,冲击更高的分段)。
DOTA2:大体猜测采用的是均衡的K值,通过估分系统玩家的起始积分在(2500-4500)附近,每场比赛结束默认分差为25(赢了加25分,输了扣25分)。比如每次匹配都是实力一致的选手,即胜率0.5,那么K=50(实际情况会复杂的多,多人组队,跨积分段匹配,低分抱大腿之类)。按现在玩家数量7000分(2015年9月27日)可以排到前500,再过一年随着玩家数量的增多,7000分可能只能排到前1000甚至2000。
所以K值的选取取决于,这个比赛需要什么样的方式来统计选手的积分,根据赛制、参与选手数量之类的参数微调。大多数情况下,这是只是一个参考估值,而非精确值。
分母中的400
注意公式中的分母400,为何这里是400而不是200、100或者1000?
实际计算可以参考这里,公式演算出400的由来。总体来说400是一个平衡的、万金油的值、让多数玩家积分保持标准正态分布的值….
但是这里不想用大量复杂的数学公式来说400的由来,直接说说它有什么用 – 影响着胜负概率的计算
分差 | 概率(分母200) | 概率(分母400) | 概率(分母800) |
1 | 0.497122 | 0.498561 | 0.499280 |
2 | 0.494244 | 0.497122 | 0.498561 |
3 | 0.491366 | 0.495683 | 0.497841 |
4 | 0.488489 | 0.494244 | 0.497122 |
5 | 0.485613 | 0.492805 | 0.496402 |
6 | 0.482737 | 0.491366 | 0.495683 |
7 | 0.479863 | 0.489928 | 0.494963 |
8 | 0.476990 | 0.488489 | 0.494244 |
9 | 0.474119 | 0.487051 | 0.493524 |
10 | 0.471249 | 0.485613 | 0.492805 |
结果就是,同样的积分差值,越高的分母,计算出的积分低获胜概率越高。更科学点的解释就是,假如2名选手的积分差值在20分,那么根据比赛规则与内容,这20分实际的胜率影响是多少?似乎这里又与K值相关,又与比赛本身设定相关,更加影响标准正态分布的初衷。当K值相同的情况下,越高的分母,越低的积分变化。
一些关于ELO杂谈
一般来说K值32,分母400可以满足80%的需求,对于精益求精的人,个性化根据ELO改变为自己需要的数值与用法也是可行的,并且相对容易的。
对于ELO初始积分值的选择,现在目前已知的:定值,参与匹配评级,根据选手战力估值(过往战绩,游戏中的战力值之类),选择合适才是最好。
想有更大的积分区间,请扩大K值,想让用户积分分布的更科学(两头小,中间大,满足易于上手,难于精通),请让分母在400附近浮动。
可以增加权重值(简单加减法关系),用于平衡积分获取。最好的例子是国际象棋中的先手优势。
(全文结束)
转载文章请注明出处:漫漫路 - lanindex.com