Elo排名系统
来源:互联网 发布:淘宝客小程序 编辑:程序博客网 时间:2024/05/17 07:10
Elo rating system用来计算玩家的相对技术等级,它本来是个改良的国际象棋积分系统,现在被广泛用于许多游戏。比如帝国时代3, 星际,魔兽争霸3等等。 电影《社交网络》中也有一段,马克伯格用此算法计算女生排名的片段,
下面进入正题:先给出模型假设,然后是算法,最后是个例子
1、假设
(1)每位选手初始积分一致,统一初始化为1400分。通过比赛产生差异,形成排名,积分越高的排名越靠前。(2) 每个选手在每局比赛中的表现是一个正态分布的随机变量。尽管选手在不同的比赛中发挥可能差异很大,但每位选手在一段时间内表现的平均值变化很小。Elo用随机变量的平均值来代表选手的真正水平。
(3)Elo用胜/平/负来评价选手在某一局比赛中的表现,i.e.赢就加分,输就扣分,平手不得分。
继续简化,微软在开发Xbox在线游戏时使用了一个True Skill的变量,评估选手能力。当然还是基于正态分布假设,但是偏重分析均值μ和标准差σ。
2、变量说明
Ra: A选手当前排名; Rb: B选手当前排名。
Sa: 实际胜负值, 胜 = 1 ;平=0.5; 负=0 。
Ea:预期A选手的胜负值,EA = 1/(1+10^[(Rb-Ra)/400]) ;Eb: 预期B选手的胜负值 EB = 1/(1+10^[(Ra-Rb)/400]) ,
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 。
K:每场比赛能得到的最大分数,魔兽里K=32 。
R'a: A选手一场比赛之后的积分
R'a = Ra + K(Sa-Ea)
K:每场比赛能得到的最大分数,魔兽里K=32 。
R'a: A选手一场比赛之后的积分
R'a = Ra + K(Sa-Ea)
3、实例
若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分。
假设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分。
也就是说赢分与积分差距有关。你赢高分队得分多,输给低分的输的也多,赢低分的分数就少。
B队最终得分为 R'b = 1600 + 32*(1-0.64) = 1600 + 11.52 = 1612, 赢12分,A队输12分。
也就是说赢分与积分差距有关。你赢高分队得分多,输给低分的输的也多,赢低分的分数就少。
- Elo排名系统
- ELO Rating排名系统
- 竞技场积分系统ELO详解
- 竞技场积分系统ELO详解
- Elo系统---英雄联盟、WOW采用的匹配算法
- PHP-校花评选-埃洛等级分系统(Elo rating system)
- ELO算法
- GPA排名系统
- [HAOI2008]排名系统
- 4043:GPA排名系统
- [HAOI2008]排名系统
- 排名系统的设计
- 【COGS257】动态排名系统
- 1056: [HAOI2008]排名系统
- 【u242】排名系统
- 【bzoj1056】[HAOI2008]排名系统
- Elo rating system(Elo 打分体系)
- ELO等级介绍
- 链式二叉树后序遍历的非递归形式,终于搞定了
- 数据库的常用命令详解
- 运算符的重载
- Qt .pro项目工程文件语法和格式
- 花样(花のように) 松隆子 歌词——待修改
- Elo排名系统
- Android适配器Adapter学习
- alloca malloc realloc calloc
- 记录编写人人网应用的文(1)
- JS eval()函数
- android 数据存储和访问方式一:文件详解
- android 数据存储和访问方式三:SQLite数据库详解
- L INUX下无线网卡驱动程式安装的一般步骤
- C#中在panel上写文字并换行的方法