Menu

Elo 等级分计算器

算出期望得分和新的等级分,每一步都写清楚。

作者 Nethanel Bar, 联合创始人兼 CEO

最后更新

准备好学习这盘棋到底怎么下了吗?

Coddy 国际象棋课程从摆棋开始,带你学习开局、战术和残局,每次一个可交互的局面。

一个结果到底值多少

等级分是一种预测,而不是奖杯。Elo 把两个等级分的差距换算成期望得分,也就是如果等级分准确,强的一方应该拿到这一分中的多少;然后根据实际结果和预测相差多少,同时调整双方的等级分。赢了本该赢的人,几乎不会有变化。赢了本不该赢的人,系统会让你涨很多,因为它刚刚发现自己对你的判断错了。

整个系统就是这样,一行就能写完:新等级分等于原等级分加上 K 乘以实际得分与期望得分之差。其他一切,包括 K 值、400 分上限、和更强的对手下和为什么能涨分,都只是这一行之上的细节。本页面会把这一行代入你的数字写出来,而不是只给你一个答案让你相信。

它还会同时显示三种结果。“赢了能涨多少”和“没赢会掉多少”其实是同一个问题问了两遍,赛前两个都知道,比赛后只知道一个有用得多。

Elo 等级分系统是怎样运作的

  • 期望得分只取决于差距。领先 200 分的一方预期拿到 76% 的分数,不管双方是 1200 和 1000,还是 2600 和 2400。正因为如此,这套标尺在整个范围内都有意义。
  • K 值决定一场比赛最多能让等级分变动多少。FIDE 规定:等级分对局少于 30 盘的棋手,以及等级分仍低于 2300 的 18 岁以下棋手,K 为 40;2400 以下的成熟棋手为 20;等级分一旦“曾经”达到 2400,就是 10。触发条件是历史最高分,所以大师即使跌回去,也保持慢速的 K 值。
  • 等级分差超过 400 分时,一律按 400 分计算。如果没有这个上限,2600 战胜 900 的期望得分会是 0.9999,赢了还要为此几乎赔上一整分。差距远没到这么大时模型就已经不再有用,所以 FIDE 干脆不再让差距继续扩大。
  • 和棋并不是中性的结果。面对比你高 200 分的对手,你的期望得分是 0.24,所以半分就超出了预测,你的等级分会上涨。面对比你低 200 分的对手,同样的半分会让你掉分。
  • 在一盘棋里,等级分是零和的:你涨多少,对手就掉多少,前提是你们的 K 值相同。如果 K 值不同,比如少年棋手对老棋手,两边确实不平衡,等级分通胀和通缩的争论就是从这里开始的。

怎样算出你的新等级分

  1. 输入你的等级分和已下的等级分对局数

    对局数只用来选择 K 值:少于 30 盘时 FIDE 用 40,这就是为什么新棋手的等级分波动那么大。如果你已经知道自己的 K 值,直接填在第三个框里,它会覆盖其他所有设置。

  2. 添加每位对手和结果

    每盘棋一行。只有一盘棋时,页面还会显示另外两种结果会带来什么变化,这个数字在坐下之前知道,比赛后知道有用得多。

  3. 先看答案,再看过程

    新等级分和变化值在最上面,旁边是期望得分、你的实际得分和 K 值。下面是公式的每一步,都代入了你的数字。

  4. 查看整场比赛的表现分

    下了几盘之后,页面还会给出你的表现分:对手平均等级分加上 400 乘以(胜局数减负局数)再除以对局数。这是标准的近似算法,比赛报告里说的“2100 的表现分”指的就是它。

等级分差距值多少

仅凭等级分差,双方各自预期拿到的分数比例。这条曲线是对称的,所以两列加起来永远是 100%。

等级分差强者得分弱者得分
050%50%
5057%43%
10064%36%
20076%24%
30085%15%
40091%9%

计算示例

K = 32 时 1613 战胜 1609

几乎势均力敌的一盘:期望得分是 0.506,所以拿到整整一分就比预测多出 0.494。乘以 32,变化值是 +15.8,公布为 +16。新等级分是 1629,而对手跌到 1593,因为在一盘棋里,涨的分总得有个出处。

1800 输给 1500

期望得分是 0.849,所以得零分就把预测全部落空了:20 x (0 - 0.849) 等于 -17。这就是为什么一次爆冷的代价比一场常规胜利的收获大得多:同样两位棋手、同样的 K 值,赢了也只值 +3。

1200 和 2400 下和

实际差距是 1200 分,但 FIDE 按 400 分算,所以期望得分是 0.09,而不是 0.0002。因此和棋比预测多出 0.41,在 K = 40 时涨 16 分。如果没有上限,会涨 20 分,而强的一方会为模型本来就无从预测的结果掉分。

常见错误

  • 以为网上的等级分就是 Elo。Chess.com 和 Lichess 用的都是 Glicko 的变体,除了等级分本身,还会追踪这个等级分有多不确定。所以新注册的账号一晚上能涨跌 100 分,而任何 Elo K 值都不允许这样。
  • 跨系统比较等级分。Chess.com 上的 1600、Lichess 上的 1600 和 FIDE 的 1600 是三种不同的实力。这个数字只在它所在的那个棋手池里才有意义。
  • 忘了 400 分上限。它只在实力悬殊的对局里起作用,但一旦起作用,就会大幅改变答案。忽略它的计算器和裁判的成绩表对不上,原因就在这里。
  • 把一场比赛的每盘棋分开计算。FIDE 会把整场比赛的期望得分加总,最后只乘一次 K。每盘都用更新后的等级分重新算,得出的是另一个错误的数字。
  • 一直用 K = 40。这是新手的系数,本来就该到期:下满 30 盘等级分对局后,你的等级分应该已经找到了自己的水平,K 值一直偏高只会让它永远波动。
  • 把表现分当成等级分。只有四盘棋时,它的误差范围非常大;而且这个线性公式在 100% 或 0% 得分时完全失效,只会返回对手平均分加减 400。

Elo 计算器常见问题

国际象棋 Elo 等级分是怎么计算的?

新等级分等于原等级分加上 K 乘以实际得分与期望得分之差。期望得分只由等级分差决定:1 除以(1 + 10 的“等级分差除以 400”次方)。K 决定一场比赛能让你变动多少,在 FIDE 的系统里是 40、20 或 10,取决于你的经验和水平。

这是 FIDE 的官方算法吗?

它遵循 FIDE 公布的规则,并说明了哪些地方和他们的算法不完全一致。有两处不同:这里的期望得分用的是连续曲线 1/(1+10^(D/400)),而 FIDE 公布的是同一条曲线按等级分区间制成的查找表,所以在舍入边界上,官方变化值可能和我们差 1 分;另外,这里实现的 K 值规则是普通情况加上少年规则,如果你所在的棋协另有规定,请在第三个框里填入你自己的 K。400 分上限和 1400 分的等级分下限都按公布的规则执行。

国际象棋里的 K 值是什么?

它是灵敏度旋钮。FIDE 规定:等级分对局少于 30 盘的棋手 K = 40,2400 以下的成熟棋手为 20,等级分达到 2400 后为 10。K 值高会让等级分变化得快,系统还在摸清一个人有多强时需要这样,之后就不需要了。

赢了等级分更高的棋手能涨多少分?

这取决于差距和你的 K 值,但规律是固定的:爆冷越大,涨得越多。K = 20 时,战胜比你高 200 分的人大约值 +15,战胜同等水平的人值 +10,战胜比你低 200 分的人大约值 +5。

下和会掉等级分吗?

只在对手等级分比你低时才会。和棋得半分,所以只要半分高于你的期望得分,你就会涨分,而这恰好发生在对手比你强的时候。对手和你水平相当时,和棋不会带来任何变化。

什么是表现分?

表现分是一个棋手要让自己的成绩正好等于预期所需要的等级分。常用的近似算法是对手平均等级分加上 400 乘以(胜局数减负局数)再除以对局数,本页面对有胜有负的成绩报告的就是它。它在全胜或零分时完全失效,赢一盘 1600 会被算成 2000 的表现分,所以在这两种情况下,页面改用 FIDE 自己表格的端点值,即 dp 为正负 800,并注明用的是哪条规则。

为什么计算器把等级分差的上限设为 400?

因为 FIDE 就是这样做的。手册规定,超过 400 分的差距按 400 分计算,这样模型就不会做出毫无依据的预测,比如 0.9999 的期望得分。网上大多数计算器都忽略了这条规则,所以在实力悬殊的对局上,它们的答案和我们的不一样。

这和 Chess.com 或 Lichess 的等级分计算器一样吗?

不一样。这两个网站都用 Glicko 类系统,其中的等级分偏差在你不下棋时变大、下棋时变小,所以一次变化的大小取决于系统对你有多大把握,而不是固定的 K。本页面实现的是 FIDE Elo。

要赢多少等级分的对手才能涨 10 分?

把结果设为胜,然后试不同的对手等级分,直到变化值显示 +10。K = 20 时大约是水平相当的对手;K = 40 时大约是比你低 200 分的人。三种结果的预览让这件事很快,因为它会同时显示胜、和、负。

更多国际象棋工具

Coddy 编程语言插图

和 Coddy 一起学国际象棋

开始