2014-11-25 66 views
1

最近製作了一個錦標賽支架,玩家可以註冊並參與獲勝的機會。正如你所看到的,這裏是它的照片:elo的起始值

enter image description here

一旦比賽支架完成後,我打算將這些獎金轉換成排名。因此,因爲他在比賽中表現最好,所以「Achilles」將排名第一,然後#2將會是「rjg 2」等等。比賽支架將被轉換爲排名的原因是因爲現在我想讓玩家有機會與其他玩家進行比賽。這很重要,因爲即使錦標賽支架有效,它也不包含球員之間所有可能比賽的結果。沒問題,錦標賽的支架只是爲了給其他人基本的表示誰是最好的/最差的。然而,一旦錦標賽支架轉換爲排名,新用戶也有機會註冊,允許更多的玩家相互競爭。現在,在我開始排名之前,我想嘗試在比賽中使用Elo排名。我的問題是,我需要分配這些球員在比賽點。這很棘手,因爲如果我不小心,我的K值可能會混淆事物的順序。這裏是我的表:

#1 Achilles 
#2 rjg 2 
#3 gg 
#4 beta 1 
#5 dfgsdf 
#6 test2 
#7 rjgtest 
#8 rocket 

我需要分配每個玩家的「點」,以反映排名。這意味着#1阿基里斯會有最多的積分,而#2將是rjg2等......但是,隨着Elo的工作方式,我不知道要分配多少點。如果我這麼做的話,球員們將永遠沒有機會在排名中上升,但如果我做得太小,隊伍將不斷變化。

例如,如果我把我的表像這樣:

1 1000 
2 900 
3 800 
4 700 
5 600 
6 500 
7 400 
8 300 
9 200 
10 100 

凡#1將有1000點,#2將有900點,依此類推。如果排名#10排名第一,顯然非常不可能。所以,當我用elo做數學時,會發生下面的情況:

所以如果我以這種方式去做(基於它的解釋方式here),可以說我的排名是#10 。根據上面的網站,我的公式是:

R' = R + K * (S - E) 

#10的評分只有100分,其中#1有1,000。 這樣算下來預期毆打#1的值的數學排名第10的後:

1/[ 1 + 10^([1000 - 100]/400) ] 
= 0.0055% 

0.55%,非常低,是有道理的,排名10,幾乎沒有打人爲1級#良好的機會。但是,如果他打敗了他,結果如下:

100 + 32 * (1 - 0.0055) 
= 131.824 

他在擊敗排名第一的球員時只贏得31分。這顯然不起作用,但我可以減少點數的範圍或增加我的K因子。

有沒有人有任何建議,使這項工作?或者,也許建議我以不同的方式排列我的球員?

+0

設置'K'高一點。如果他能夠擊敗#1,他肯定會贏得更多的時間......你真的不希望因爲單場比賽而產生巨大的波動。 – 2014-11-25 19:03:45

回答

0

恐怕我對Elo的評分知之甚少,但我知道選擇合適的K值可能會有問題。

我知道K值的改變通常取決於玩家玩過多少遊戲。玩過很多遊戲的玩家被賦予較低的K值,因此他們的評分不會變化太大(因爲我們對他們的評分更加確定,我們希望它保持相當穩定)。同樣地,一個沒有打過很多遊戲的玩家會得到更高的K值(我們不太確定他們的評分,所以我們不介意它的移動更多)。

一種替代方法是使用評分系統,這些系統試圖結合我們對玩家評分的不確定性的度量。例如,Glicko評分系統或Microsoft的TrueSkill算法。這些系統根據玩家技能水平的變化(或不確定性)建立自己的估計,因此您無需設置K值。

TrueSkill在http://trueskill.org上有一個很好的Python實現,由Heungsub Lee編寫,提供了大量關於如何使用這個庫的例子。玩家的評級包括平均值(代表他們的估計技能)和標準差(代表我們對他們技能的不確定性)。

TrueSkill被微軟用來在許多Xbox遊戲上進行配對,所以應該很適合你匹配類似能力玩家的意圖。

+0

我知道K值對Elo來說非常重要。但是,我不認爲這對我的系統意義重大。意思是,我不認爲我必須讓它成爲不同球員的變數,我想我可以讓它保持不變。但是,我正在尋找任何可能的選擇。 TrueSkill看起來不錯,但不像Elo那麼容易實施。謝謝你讓我看到這個。 – 2014-11-25 09:01:37