? 很多游戲都需要用到打分系統,比如11平臺的天梯,魔獸世界的競技場,還有國際象棋。Elo Rating System就是一個用來計算二人(或兩個團隊)競技游戲中各個選手(團隊)等級的算法。該算法由匈牙利裔美籍物理學家Arpad Elo發明。
? 在打分系統中,每個選手都有一個數字,代表其等級。數字越大的選手等級越高,而分數是由和其他選手競技得來的,贏得比賽就加分,輸掉比賽則扣分。贏得或輸掉的分數取決于對戰雙方的等級差距。比如,如果一個選手A贏了一個比他等級高很多的選手B,則A的等級就會提高跟多,B的等級則會降低很多,反之,如果選手A贏了一個等級遠低于自己的選手B,則A的等級不會上升很多,而B的等級也不會下降很多。
? 假定選手A的真實等級為RA,選手B的真實等級為RB,那么,選手A的等級的期望值為:
? 相似地,選手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的博客
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
