本文主要是介绍elo积分算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
elo积分算法
计算玩家的相对技术等级,由Arpad Elo发明。本来是一个改良的国际象棋积分系统,后广泛应用于游戏的积分系统以及各类竞技体育的积分排位系统。
核心原则
- 假设每个玩家在每盘游戏中的表现是一个正态分布的随机变量
- 虽然选手的发挥可能起伏比较大,但是一段时间内会趋于一个平均值
- 用这个随机变量的平均值代表选手的真正水平
- 如果平均值变大,那么就代表这个选手的水平上升(段位提升了)
数学公式
Ra:A选手当前分数
Rb:B选手当前分数Ea:预期A选手的胜负值
Ea = 1 / (1 + 10^[(Rb - Ra) / 400])Eb:预期B选手的胜负值
Eb = 1 / (1 + 10^[(Ra - Rb) / 400])可以得出,Ea + Eb = 1Sa:实际胜负值胜:1平:0.5负:0K:每场比赛能得到的最大分数(每种游戏的K值不同)R`a:A选手赛后积分
R`a = Ra + K(Sa - Ea)R`b:B选手赛后积分
R`b = Rb + K(Sa - Eb)
胜负值越高的选手,赢了之后加分不会太多(战胜比你弱的选手是理所应当的);反之胜负值低的选手输了减分也不会太多;以此保证公平性。
参考:https://zhuanlan.zhihu.com/p/46491630
这篇关于elo积分算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!