作者kane-zhu  转自:http://hi.baidu.com/wuaiyishang/blog/item/0ea6ec8dde90d76d9f2fb463.html
来源:http://bbs.ngacn.com/read.php?tid=1284872&fpage=1

Elo rating system

这个系统用来计算玩家的相对技术等级,通常用于博弈类游戏,比如国际象棋,围棋 *注1。

Elo,并不是一个缩写,而是系统发明者的姓,它本来是个改良的国际象棋积分系统,现在被广泛用于许多游戏。比如帝国时代3,星际,魔兽争霸3,unreal,guild wars等等。

组建模型
1 Elo假设每个玩家在每盘游戏中的表现是一个正态分布的随机变量,尽管选手在不同的游戏中发挥可能差异很大,但每位选手在一段时间内表现的平均值变化很小。elo用随机变量的平均值来代表选手的真正水平。(这句话基本没什么意义)

2 elo用胜平负来评价选手在某一场游戏中的表现,赢就是这场你发挥的比对手好,反之就是不好。(赢就加分,输就扣分,平手不得分),这是因为你不可能从某一手棋的好坏来评定一个选手的等级,下了一手好棋,或一串手筋就给2000分的评定,显然很难有说服力。

这两条就是大致的模型构建,当然是简化了的。。为了简化计算elo有一个true skill值给每个选手,当然这个值还有很多优化的算法,跟魔兽没什么关系。有兴趣的同学可以参照xbox live online的一个算法http://research.microsoft.com/mlp/apg/trueskill.aspx

数学公式
正题了, 做好笔记。。

Ra: A选手当前rating Rb: B选手当前rating

Sa: 实际胜负值, 胜 = 1 平=0。5 负=0

Ea:预期A选手的胜负值,EA = 1/(1+10^[(Rb-Ra)/400])
Eb: 预期B选手的胜负值 EB = 1/(1+10^[(Ra-Rb)/400])
Ea+Eb=1
E值也是预估的胜率,所以Ea+Eb =1,

K:每场比赛能得到的最大rating,魔兽里k=32 *注2

R'a A选手一场比赛之后的rating

R'a = Ra + K(Sa-Ea)

举例讲解
A队1500分,B队1600分,预估A队的胜负值Ea = 1/(1+10^[(1600-1500)/400])=0.36

假设A队赢了,实际胜负值为Sa=1

A队最终得分为 R'a = 1500 + 32*(1-0.36) = 1500+20.5 = 1520, 赢20分 B队输20分。

假设B队赢了,预估B队胜负值Eb = 0.64
B队最终得分为 R'b = 1600 + 32*(1-0.64) = 1600 + 11.52 = 1612, 赢12分,A队输12分。

这就是为什么你赢高分队分数多,输给低分的输的也多,赢低分的分数很少。
其实K值就是这个方程的极限,所以理论上你最多可以赢一个队伍32分,实际上29-30已经差不多了,赢了不得分也是有可能的。

平局在wow竞技场里也有可能发生,最后2个玩家同时死亡,则都不得分。

国际象棋rating的一些分析
这部分跟wow没有特别大的关系,拿来参考以下。

美国国际象棋联合会制定的评分及称号的标准,也是一1500作为基础分:

* 2400 及以上 超级大师
* 2200 - 2399 大师
* 2000 - 2199 专家
* 1800 - 1999 Class A
* 1600 - 1799 Class B
* 1400 - 1599 Class C
* 1200 - 1399 Class D
* 1000 - 1199 Class E
全世界有19743人 2200以上,1868人2400-2499,563人2500-2599, 123人2600-2699,18人2700-2799,只有4人打到过2800。其中包括棋王卡斯帕罗夫。

电脑深蓝如果评分的话估也计超2800。

根据这个,算一下国际象棋有多少player pool,wow arena 有多少player pool就能知道wow 竞技场大致冲能到什么分数,目前看来2600是极限了,那也是得在人很多的服务器大组上,当然中国玩家冲到2800我也不会意外的。

大致翻译完毕,加了些评论,算是第一稿翻译了,wikipedia上这篇文章就是没中文,其他语言都有。。
注1 其实围棋不用这个系统,用的是段位这个相对模糊的概念,因为围棋本身就是比象棋/国旗象棋抽象的多的一个游戏
2 wow里的k值可以通过两个1500队伍的比赛推算出,输赢个16,所以k=32

=======================================================================

mark一下,留着以后自己需要做竞技场系统时使用

竞技场积分系统ELO详解相关推荐

  1. 我的世界服务器积分系统,我的世界PVP地图生命积分板系统原理详解

    我的世界PVP地图生命积分板系统原理详解由小编给大家带来,希望这篇我的世界PVP地图生命积分板系统原理详解,能够帮助到各位正在玩我的世界的玩家朋友们! 我的世界PVP地图生命积分板系统原理详解 大家去 ...

  2. EasyPR中文开源车牌识别系统 开发详解

     在上篇文档中作者已经简单的介绍了EasyPR,现在在本文档中详细的介绍EasyPR的开发过程. 正如淘宝诞生于一个购买来的LAMP系统,EasyPR也有它诞生的原型,起源于CSDN的taotao ...

  3. Centos新建系统用户详解

    2019独角兽企业重金招聘Python工程师标准>>> Centos新建系统用户详解 听语音 | 浏览:7501 | 更新:2015-02-02 18:56 | 标签:操作系统 1 ...

  4. linux系统安全详解

    linux系统安全详解 http://www.2cto.com/Article/201207/142181.html一,BIOS安全(硬件上的安全) 1,最基本最简单的安全配置,保障计算机硬件配置等不 ...

  5. python try catch打印到日志_django 捕获异常和日志系统过程详解

    这一块的内容很少, 异常使用try except即可, 日志只需要几行配置. 使用装饰器捕获方法内的所有异常 我使用装饰器来整个包裹一个方法, 捕获方法中的所有异常信息.并将其转为json返回客户端. ...

  6. 荒野行动系统推荐观战榜_荒野行动如何进行观战 荒野行动观战系统使用详解...

    在荒野行动游戏中,一般玩家组队死亡之后就会退出游戏进行下一把,不过今日荒野行动全新上线了观战系统,让每一位玩家都能够在被淘汰之后,还能与队友进行互动沟通,下面就让小编为大家来介绍一下这个全新的游戏系统 ...

  7. Linux系统 logrotate 详解

    对于 Linux 系统安全来说,日志文件是极其重要的工具.不知为何,我发现很多运维同学的服务器上都运行着一些诸如每天切分 Nginx日志之类的 CRON 脚本,大家似乎遗忘了 Logrotate,争相 ...

  8. 戴尔台式计算机怎么安装的,戴尔Dell电脑U盘安装台式机win10系统教程详解

    最近有位戴尔Dell电脑用户,在使用电脑的时候,因为操作失误导致Windows文件出现问题,需要重装系统才可以解决.因此,大白菜整理了一些u盘重装系统的资料,下面就来看看戴尔Dell电脑U盘安装台式机 ...

  9. linux surface pro 4 driver,重置出错?微软Win10平板Surface Pro 4重装系统教程详解

    Surface Pro 4系统重置出错该怎么办? Surface Pro 4无法启动该怎办? Surface Pro 4平板如何重装Win10系统? 在Win10刚刚发布时,很多用户在升级Window ...

最新文章

  1. linux 内核 同步机制
  2. 强化学习(一)——专业术语及OpenAI Gym介绍
  3. boost::hana::filter用法的测试程序
  4. 微软在Build 2019大会上发布Fluid Framework协作平台
  5. ldap odbc mysql_Mysql+ODBC+OpenLDAP
  6. Fat Jar Eclipse Plug-In Tutorial
  7. 密码学在区块链中的应用 【八】
  8. linux 超大文件编辑,Linux 修改打开最大文件数
  9. 棋牌游戏服务器设计(1)
  10. 4. Nginx 与 PHP
  11. [翻译]架构师应该知道的97件事_03关键问题可能不是出在技术上
  12. 如何将html改成mht格式,如何编辑mht格式的文件,什么是mht?
  13. 魔改一波合成大西瓜!代码已开源~
  14. OpenCV 获取图像像素的最大最小值及其对应的位置 minMaxLoc(仅适用于单通道图像)
  15. 集合长度可变的实现原理(解析为什么集合长度可变)
  16. sql 删除唯一索引unique
  17. win10电脑耳机没有声音 如何在不重启电脑情况下耳机重新有声音
  18. 《中国互联网发展报告(2018)》发布 大数据市场交易旺盛
  19. unittest+tomorrow+BeautifulReport实现自动化测试的多线程
  20. linux 宕机 内存,Linux内存使用高,触发系统宕机

热门文章

  1. 电商中关于价格的思考
  2. PyTorch深度学习实战 | 基于YOLO V3的安全帽佩戴检测
  3. 车间忙的热火朝天,实则效益很低?
  4. JS实现alert中显示换行的方法
  5. Unity3D学习笔记(二、小球滚动吃金币)
  6. input placeholder添加下划线
  7. 简易的ATM银行系统(Java)
  8. 噬菌体展示文库构建全流程
  9. 7/16数字图像处理之图像分割
  10. 启动ucosii之四OSTaskCreate()