一个ELO Rating的简单Java实现
近期兼职做了个小游戏,有感于暴雪的WOW竞技场排名系统,于是用简单实现了一个ELO Rating来记分。
WOW的排名系统暴雪自称是“ELO Like”,是对ELO Rating做了一些改进的。我们这里先介绍一下标准的ELO Rating。ELO等级分系统是用来计算一个人在双人对决性比赛里的相对的技能等级的一个系统,最早应用于国际象棋和围棋。简单的说,就是把“实力”这种比较“虚”的东西数字化的一种办法。这个系统是由一个物理学教授Arpad Elo创立的,他同时也是一位国际象棋的大师。众所周知,“实力”这个东西是很难判断的,但是实力也是一个客观存在的东西。Elo教授作出了一个假定:一个人的实力在短期内是一定的,并且遵从某一个正态分布函数;长期来看,一个人的实力是缓慢的变化的。并由于国际象棋中很难判别每一步甚至每一局的价值,Elo教授引入了统计学,用统计一段时期内棋手的输赢的办法来衡量该棋手的实力,同时作出第二个假定:某一特定实力范畴里,相互之间的差别一般可预期,不会出现太大意外。比如强手未必每盘都赢另一个比他弱的选手,但是总体来说胜率要高。具体的数学公式这里就不列出来了,有兴趣的朋友去Google搜索下就找到。
?
下面是Java实现的一些片段:
??