zoukankan      html  css  js  c++  java
  • 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的博客

     

     

  • 相关阅读:
    在controller间分享数据(第一种办法)
    AngularJS之Factory vs Service vs Provider
    directive和controller如何通信
    AngularJS 之Services讲解
    AngularJS心得体会
    int 和Integer
    2019天梯赛练习题(L2专项练习)
    2019天梯赛练习题(L1专项练习)
    Hash冲突的几种解决方法
    HashMap
  • 原文地址:https://www.cnblogs.com/kemaswill/p/2763362.html
Copyright © 2011-2022 走看看