Elo排名系統

來源:互聯網
上載者:User

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])
,顯然Ea+Eb=1

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分。 

假設B隊贏了,預估B隊勝負值Eb = 0.64 
B隊最終得分為 R'b = 1600 + 32*(1-0.64) = 1600 + 11.52 = 1612, 贏12分,A隊輸12分。 
   
也就是說贏分與積分差距有關。你贏高分隊得分多,輸給低分的輸的也多,贏低分的分數就少。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.