很多游戏都需要用到打分系统,比如11平台的天梯,魔兽世界的竞技场,还有国际象棋。Elo Rating System就是一个用来计算二人(或两个团队)竞技游戏中各个选手(团队)等级的算法。该算法由匈牙利裔美籍物理学家Arpad Elo发明。
在打分系统中,每个选手都有一个数字,代表其等级。数字越大的选手等级越高,而分数是由和其他选手竞技得来的,赢得比赛就加分,输掉比赛则扣分。赢得或输掉的分数取决于对战双方的等级差距。比如,如果一个选手A赢了一个比他等级高很多的选手B,则A的等级就会提高跟多,B的等级则会降低很多,反之,如果选手A赢了一个等级远低于自己的选手B,则A的等级不会上升很多,而B的等级也不会下降很多。
假定选手A的真实等级为RA,选手B的真实等级为RB,那么,选手A的等级的期望值为:
公式-1
相似地,选手B的等级的期望值为:
上述两个式子还可以写作:
其中:
更新选手A的等级的公式为:
其中RA为A选手现在的等级,EA可由公式-1求得,K是一个常数,对于等级比较高的选手,K值可以设置的小一点,对于等级比较低的选手,K值可以设置的大一点,代表着等级越高的选手提升的空间越小。SA代表着本次比赛的胜负,若A胜,则SA=1,若A输,则SA=0,若平局,则SA=0.5。
举例说明:若A选手当前的等级为1300,B选手当前等级为1200,假设A输给了选手B,设K=32,则A的等级变为1279,B的等级变为1220。
关于K的取值,在美国国际象棋联盟(USCF)中是如下规定的:
选手等级 | K值 |
0-2099 | 32 |
2100-2399 | 24 |
2400以上 | 16 |
参考文献:
[1] Wikipedia-Elo Rating System
[2] Elo Rating System-Cody的记事本
[3] Elo Rating System dragoniye的博客