• Elo Rating System


      很多游戏都需要用到打分系统,比如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的博客

     

     

  • 相关阅读:
    drf 权限流程解析
    drf 认证流程解析
    drf 版本解析
    Django REST framework初识
    RESTful规范
    Flask框架
    Flask框架解析目录
    hdu
    hdu 6113 度度熊的01世界(结构体的赋值问题)
    hdu 6114 chess(排列组合)
  • 原文地址:https://www.cnblogs.com/kemaswill/p/2763362.html
Copyright © 2020-2023  润新知