ELO评分算法

来源:互联网 发布:淘宝卖闲置物品 编辑:程序博客网 时间:2024/05/21 06:32

ELO等级分制度是由匈牙利裔美国物理学家Elo创建的一个衡量各类对弈活动选手水平的评分方法,是当今对弈水平评估的公认的权威方法。被广泛应用于国际象棋、围棋、足球等运动,以及很多网游与电子竞技产业。游戏界比较著名的应用有: WOW(魔兽世界)、DOTA、LOL。

ELO计算方法
Ra:A玩家当前的积分
Rb:B玩家当前的积分
Sa:实际胜负值,胜=1,平=0.5,负=0
Ea:预期A选手的胜负值,Ea=1/(1+10^[(Rb-Ra)/400])
Eb:预期B选手的胜负值,Eb=1/(1+10^[(Ra-Rb)/400])
因为E值也为预估,则Ea+ Eb=1
这里写图片描述
这里写图片描述

R’a=Ra+K(Sa-Ea)
R’a:A玩家进行了一场比赛之后的积分
其中 K 值是一个常量系数,按照国际象棋里的标准, K 值对于大师选手为16,对于一般选手是32。K值的大小直接关系到一局游戏结束,根据胜负关系计算出的积分变化值。

关于K值
K值是一个极限值,代表理论上最多可以赢一个玩家的得分和失分,K/2就是相同rating的玩家其中一方胜利后所得的分数。国际象棋大师赛中,K=16;在大部分的游戏规则中,K=32。通常水平越高的比赛中其K值越小,这样做是为了避免少数的几场比赛就能改变高端顶尖玩家的排名。

关于分母400
公式Ea和Eb中分母的400是怎么来的呢?为何是400,不是200、100或者是其他?
根据公式可以得出,当K值相同的情况下,越高的分母,越低的积分变化。总体来说400是一个平衡的、万金油的值、让多数玩家积分保持 标准正态分布 的值。具体可以参考:http://en.chessbase.com/post/arpad-elo-and-the-elo-rating-system

实例说明
若当前A玩家积分为1500,B玩家积分为1600
预估A玩家的胜负值: Ea = 1/(1+10^[(1600-1500)/400])≈0.36
预估B玩家的胜负值: Eb = 1-Ea = 1-0.36 = 0.64
假设A玩家获胜,实际胜负值为Sa = 1
A玩家最终得分为 :R’a = 1500 + 32*(1-0.36) = 1500+20.5 = 1520
A玩家赢20分,B玩家输20分。
假设B玩家获胜,实际胜负值为Sa = 1
B队最终得分为 R’b = 1600 + 32*(1-0.64) = 1600 + 11.52 = 1612,B玩家赢12分,A玩家输12分。

参考文献:
维基百科-等级分
ELO匹配系统实际应用

0 0