您的位置:首頁 >盤口分析 >

《社交網絡》MarkZackburg被女朋友甩后的ELO等級分制度

時間:2022-07-28 17:03:38 來源:網絡整理

《社交網絡》中的馬克·扎克伯格在被女友甩后,在室友的啟發下,充分發揮了技術宅男自娛自樂的惡搞天賦足球世界排名計算方法,創建了一個名為Facemash的網站進行長相分析的女生。排名打分足球世界排名計算方法,結果網站流量太大,直接癱瘓了學校網絡。 Facemask受歡迎的關鍵在于Zackburg的朋友Eduardo在櫥窗上寫的排名公式。我在看電影的時候對這個排名公式很感興趣。上網看了下,發現這個公式就是大名鼎鼎的ELO評分系統。 ELO的應用非常廣泛。大多數棋類游戲和流行的Moba游戲,例如11平臺的DOTA天梯系統,都使用ELO等級分。

未來競技游戲的排名可以通過ELO排名,更真實的體現玩家的實力。閑來無事做了個flash面罩,很有意思。

ELO的實現代碼

package
{
    
    /**
     * Elo排名算法
     * @author ShuchangLiu
     */
    public class EloRating
    {
        public static const ELO_RESULT_WIN:int = 1;
        public static const ELO_RESULT_LOSS:int = -1;
        public static const ELO_RESULT_TIE:int = 0;
        
        public static const ELO_RATING_DEFAULT:int = 1500;
        
        protected var rating1:int;
        protected var rating2:int;
        protected var score1:Number;
        protected var score2:Number;

《社交網絡》MarkZackburg被女朋友甩后的ELO等級分制度

public function EloRating(rating1:int = ELO_RATING_DEFAULT, rating2:int = ELO_RATING_DEFAULT):void { this.rating1 = rating1; this.rating2 = rating2; } /** * @param result ELO_RESULT_WIN or ELO_RESULT_LOSS or ELO_RESULT_TIE */ public function setResult(result:int):void { var cscore1:Number = computeScore(this.rating2, this.rating1); var cscore2:Number = computeScore(this.rating1, this.rating2); if (result == ELO_RESULT_WIN) { this.rating1 = this.rating1 + (computeK(this.rating1) * (1 - cscore1)); this.rating2 = this.rating2 + (computeK(this.rating2) * (0 - cscore2)); }else if(result == ELO_RESULT_LOSS) { this.rating1 = this.rating1 + (computeK(this.rating1) * (0 - cscore1)); this.rating2 = this.rating2 + (computeK(this.rating2) * (1 - cscore2)); }else{ // Assume tie this.rating1 = this.rating1 + (computeK(this.rating1) * (0.5 - cscore1)); this.rating2 = this.rating2 + (computeK(this.rating2) * (0.5 - cscore2)); } } protected function computeScore($rating1:int, $rating2:int):Number { return (1 / (1 + Math.pow(10, ($rating1 - $rating2) / 400))); } protected function computeK(rating:int):int { if(rating>=2400){ return 16; }else if(rating >= 2100){ return 24; }else{ return 36; } } /** A的獲勝期望*/ public function getScore1():Number { this.score1 = computeScore(this.rating2, this.rating1); return this.score1; } /** B的獲勝期望*/ public function getScore2():Number { this.score2 = computeScore(this.rating1, this.rating2); return this.score2; } /** A的排名等級*/ public function getRating1():int { return this.rating1; } /** B的排名等級*/ public function getRating2():int {

《社交網絡》MarkZackburg被女朋友甩后的ELO等級分制度

return this.rating2; } } }

ELO 簡介

ELO評級系統是指由匈牙利裔美國物理學家Elo創建的一種評估方法,用于衡量各種游戲活動的水平。它是當今公認的評估游戲水平的權威方法。廣泛應用于國際象棋、圍棋、足球、籃球等運動項目。網游英雄聯盟和魔獸世界中的競技戰斗系統也采用了這種分級系統。

歷史

ELO 評分系統是一種基于統計的方法,用于評估棋手的技能。美國國際象棋協會在 1960 年首次使用這種計分方法。這種方法很快就流行起來,因為它比以前的方法更公平、更客觀。 1970年,國際棋聯正式開始使用評分系統。

Elo 模型最初使用正態分布。但是實踐表明,棋手的成績并不是正態分布的,所以目前的評分系統通常采用Logistic分布。

評分方法

假設玩家A和B的當前成績分別為

,那么Logistic分布A對B的勝率的期望值應該是

類似于B對A的勝率

《社交網絡》MarkZackburg被女朋友甩后的ELO等級分制度

如果玩家在游戲中的真實得分

(Win=1 point, Sum=0.5 points, Loss=0 point) 和他的預期勝率

不同,那么他的成績點也要相應調整。具體數學公式為

在公式中

調整前和調整后的成績分別為玩家。在大師賽中

通常是 16 個。

例如,等級為 1613 的玩家 A 與等級為 1573 的玩家 B 并列。如果 K 為 32,則 A 的預期獲勝率為

,約0.5573,所以A的新成績是1613 + 32 · (0.5 ? 0.5573) = 1611. 166

國際象棋評分

在國際象棋中,成績與國際象棋聯合會頭銜的大致對應關系為

其他參考資料:

ELO成績計算公式詳解


鄭重聲明:文章僅代表原作者觀點,不代表本站立場;如有侵權、違規,可直接反饋本站,我們將會作修改或刪除處理。
大中国视频高清在线观看_青柠直播免费观看_亚洲精品无播放器在线播放网站_一级毛片免费无卡全部视频