还记得电影《社交网络》中马克·扎克伯格创建 “Facemash”(Facebook 的早期版本)的场景吗?他对爱德华多·萨瓦林说:“我需要你用来排名国际象棋选手的算法”,然后爱德华多·萨瓦林在玻璃板上写下了一个方程。
这个方程被称为 Elo 评分系统,以创建者阿帕德·埃洛的名字命名。该评分系统用于评估像国际象棋、足球、棒球和美式足球等选手对战游戏中的选手技能。
埃洛的信念如下:
- 每个选手在一场比赛中的表现是随机变量的正态分布。
- 无论选手在单场比赛中的表现如何,其平均值都会缓慢增加。
最初作为国际象棋选手的评分系统发明,Elo 现在已成为大多数电子游戏、斯诺克、拼字游戏等的基础评分系统。
Elo 评分系统解释
该系统通过使用选手的 Elo 评分来确定比赛的结果。这一切都基于概率。Elo 评分较高的选手赢得比赛的概率比评分较低的选手更高。
比赛结束后,胜者将从败者那里获得分数,从而提高自己的评分。
如果高评分选手获胜,只会从低评分选手那里转移少量分数。然而,如果低评分选手爆冷获胜,那么被转移的分数将远大于高评分选手获胜时的情况。(听起来是不是不太公平?)
Elo 评分系统方程解释

让我们来看一下 Elo 评分方程。
E
A
=
1
1
+
1
0
(
R
B
−
R
A
)
/
400
.
E
B
=
1
1
+
1
0
(
R
A
−
R
B
)
/
400
.
\begin{array}{l} E_{A}=\frac{1}{1+10^{\left(R_{B}-R_{A}\right) / 400}} .\\ E_{B}=\frac{1}{1+10^{\left(R_{A}-R_{B}\right) / 400}} . \end{array}
EA=1+10(RB−RA)/4001.EB=1+10(RA−RB)/4001.
在这个方程中,
R
A
R_A
RA 和
R
B
R_B
RB 分别代表选手的当前 Elo 评分。
在现实世界的竞技游戏中,选手有赢得、输掉和打平比赛的概率。因此,当选手的得分为 0.64 时,赢得、输掉和打平的概率分别为 64%、36% 和 0%。注意,即使平局的计算概率为0,但是不同评分的选手平局后评分利用下面的更新公式计算后依旧会变动。
比赛结束后,如果选手的实际得分超过预期得分,那么选手的 Elo 评分将被更新。同样,如果选手的实际得分低于预期得分,那么其评分将被向下调整。
假设选手在比赛中需要获得
E
A
E_A
EA 分,但实际获得了
S
A
S_A
SA 分,那么选手的评分将使用以下公式更新:
R
A
′
=
R
A
+
K
(
S
A
−
E
A
)
R_{A}^{\prime}=R_{A}+K\left(S_{A}-E_{A}\right)
RA′=RA+K(SA−EA)
K 被称为 “K 因子”。它是衡量一场比赛对选手评分影响程度的指标。如果 K 值较低,那么评分变化较小;如果 K 值较高,那么评分变化较大。不同的组织使用不同的 K 因子;没有为它定义通用值。
Elo 评分系统的伪代码
import math class elo_core: def getExpectation(rating_1, rating_2): return 1.0 / (1.0 + pow(10, ((rating_2 – rating_1) / 400))) def modifyRating(rating, expected, actual, kfactor): return rating + kfactor * (actual – expected)
Elo 评分系统示例
假设 加里·卡斯帕罗夫 的评分为 2500,维斯瓦纳特·阿南德 的评分为 2200。
他们的预期得分如下:
- 如果加里·卡斯帕罗夫(获胜)= 1 / (1 + 10^((2200 - 2500)/400)) = 0.849
- 如果维斯瓦纳特·阿南德(获胜)= 1 / (1 + 10^((2500 - 2200)/400)) = 0.151
现在假设联合会决定 K 值为 24。
选手的新评分如下:
如果加里·卡斯帕罗夫获胜
- 加里·卡斯帕罗夫 = 2500 + 24 * (1 - 0.849) = 2503
- 维斯瓦纳特·阿南德 = 2200 + 24 * (0 - 0.151) = 2196
如果维斯瓦纳特·阿南德获胜
- 加里·卡斯帕罗夫 = 2500 + 24 * (0 - 0.849) = 2479
- 维斯瓦纳特·阿南德 = 2200 + 24 * (1 - 0.151) = 2220
由于加里·卡斯帕罗夫(评分更高)是热门选手,他的获胜并没有显著改变评分。然而,如果爆冷获胜,评分变化将非常大。
这就是为什么在印度和津巴布韦之间的板球系列赛中,当津巴布韦(评分较低)击败印度时,其评分迅速变化并上升排名。然而,如果印度获胜,其排名几乎没有什么变化。(尽管国际板球理事会使用了带有轻微修改的 Elo 评分版本,但基本算法保持不变。)
使用相同的算法,Facemash 为每个人分配了一个特定的评分。这个评分随着每次受欢迎的点击而增加。
Facemash 数据库中的每个女孩都被分配了一个特定的基础分。
当用户根据一个女孩相对于另一个女孩的吸引力进行评分时,被选中的女孩的评分增加,而另一个女孩的评分减少。评分某个女孩为有吸引力的用户越多,她的排名就越高。排名越好,成为校园中最吸引人的女孩的可能性就越高。
Elo 评分算法用于几乎每个体育赛事,无论是基本格式还是经过修改的版本。现在你知道了用于评估像梅西和罗纳尔多这样的足球运动员的算法,或者像《真人快打》或《铁拳》这样的电子游戏中的玩家如何获得比其他人更高的评分。
是时候创建你自己的 Facemash 或基于评分的电子游戏了。通过解决 HackerEarth 的挑战来练习你的编码技能,这些挑战使用 Elo 算法。
的玩家如何获得比其他人更高的评分。
是时候创建你自己的 Facemash 或基于评分的电子游戏了。通过解决 HackerEarth 的挑战来练习你的编码技能,这些挑战使用 Elo 算法。
转载Elo rating system: Common link between Facemash and chess!