Elo分数是怎么来的呀?带你了解elo的计算规则。

tmyb

说起这个elo,我最早接触它,还真不是因为啥高大上的项目,纯粹是那时候跟着几个朋友瞎玩,啥游戏都掺和一脚,时间长了就老争论谁更牛。一开始么,就简单记个胜场,谁赢得多谁厉害。但这法子很快就不灵了,你想,老王次次虐新手小明,他胜场是多,可含金量?跟老李这种高手对决赢一场,那感觉完全不一样嘛

后来有一次,偶然听人提到了“elo”这玩意儿,说是国际象棋那边用的,能更科学地评价水平。我当时就琢磨,这东西能不能拿来给咱们这帮“乌合之众”也排个名次?于是我就上网扒拉资料去了。

摸索elo的开始

Elo分数是怎么来的呀?带你了解elo的计算规则。

刚开始看那些公式,头都大了。什么Ra、Rb、Sa、Ea,还有个K值。一堆字母,看着就晕。Ra是A玩家当前积分,Rb是B玩家当前积分,Sa是实际胜负,赢了是1,平了是0.5,输了是0。这都好理解。最关键的是那个Ea,预期A赢的概率,公式是 Ea = 1 / (1 + 10^[(Rb-Ra)/400])。看到这个10的多少次方,分母又加个1,我就感觉这玩意儿不简单。

但就喜欢捣鼓。我想,再复杂也得有个由头。静下心来琢磨,Ea和Eb(B玩家的预期胜率)加起来肯定是1,不是你赢就是我赢嘛(或者平局)。那个400,据说是个调整系数,让分数变化不至于太离谱,咱也不用深究,照着用就行。

然后就是最核心的计分公式了:新积分 R’a = Ra + K (Sa - Ea)。这个K值,也叫K系数,说是大师用16,我们这种菜鸟娱乐局,用个32应该差不多,分儿波动大点,也刺激。

我的动手实践

理论看明白了,就得动手试试。我找了个电子表格,把我们小圈子里几个人的初始ELO都设成一样的,比如1500分,这算是个平均水平。

然后就开始记录我们的对战结果:

Elo分数是怎么来的呀?带你了解elo的计算规则。

  • 第一步:记录原始数据。 比如,我(1500分)和小张(1500分)打了一局。
  • 第二步:计算预期胜率。 因为我俩分数一样,Ra-Rb=0,所以10的0次方是1,Ea = 1 / (1+1) = 0.5。也就是说,系统预期我赢的概率是50%。
  • 第三步:记录实际结果。 假设我赢了,那我的Sa就是1。
  • 第四步:套用公式算新分。 我的新积分 = 1500 + 32 (1 - 0.5) = 1500 + 32 0.5 = 1500 + 16 = 1516分。小张输了,他的Sa是0,他的新积分 = 1500 + 32 (0 - 0.5) = 1500 - 16 = 1484分。你看,我赢了加16分,他输了扣16分,总分不变,合理!

Elo分数是怎么来的呀?带你了解elo的计算规则。

我又试了下分数有差距的情况。比如,老王(1600分)对战小明(1400分)。

  • 预期老王胜率Ea = 1 / (1 + 10^[(1400-1600)/400]) = 1 / (1 + 10^(-200/400)) = 1 / (1 + 10^(-0.5))。这个10的-0.5次方,我拿计算器按了下,大概是0.316。所以Ea ≈ 1 / (1 + 0.316) ≈ 1 / 1.316 ≈ 0.76。系统觉得老王有七成半的把握赢。
  • 情况一:老王赢了(Sa=1)。 老王新分 = 1600 + 32 (1 - 0.76) = 1600 + 32 0.24 = 1600 + 7.68 ≈ 1608分。赢了才加了大约8分,因为这是“应该的”。小明输了,对应就扣大约8分。
  • 情况二:小明爆冷赢了(Sa=0 for 老王, Sa=1 for 小明)。 这就有意思了。老王新分 = 1600 + 32 (0 - 0.76) = 1600 - 24.32 ≈ 1576分。老王输了,一把就掉了24分多!而小明,他的预期胜率Eb是1-0.76=0.24,他赢了之后加的分就是 32 (1 - 0.24) = 32 0.76 = 24.32分。小明一下子就涨了24分多!

Elo分数是怎么来的呀?带你了解elo的计算规则。

这么一实践,我立马就感觉到了elo系统的妙处。它不单单看你赢没赢,更看你赢的是谁,输给的是谁。赢了高手,大涨;输给菜鸟,血亏。反过来也一样。这就比单纯记胜场科学多了!

实践后的感想

自从用了这个elo在我那个小圈子里搞排名,大家对排名的争议明显少了。每个人都盯着自己的elo分,赢了强的就特有成就感,输了弱的也得自我反省。而且这个系统是动态的,你打得多,打得分数就上去了,反之亦然。有的人刚开始分数低,但后面连赢几个高手,分数“噌噌”往上涨,特别有戏剧性。

后来我还了解到,很多游戏里的那个“隐藏分”或者“MMR”,底层逻辑跟elo也差不多,都是为了让匹配更公平,让玩家能跟自己水平相近的人玩到一块儿去。虽然他们可能会用更复杂的模型和更多的参数,但核心思想是通的。

elo这东西,看着公式挺唬人,但真把它拆解开来,一步步去实践,就会发现它设计得相当巧妙。对我来说,从最初的困惑,到自己动手用表格实现,再到看着我们那个小圈子的排名因为elo而变得更有说服力,这个过程本身就挺有意思的。也算是解决了个不大不小的实际问题。