《社交網路》裡的數學公式elo rating system埃洛等級分系統(java實現)
阿新 • • 發佈:2018-12-22
之前看過電影社交網路,裡邊的一個演算法很吸引我,也可以說是一個數學公式,於是就用java實現了一下。
除此,我還利用這個演算法,做了一個應用,用於選出我喜歡的音樂等等.
- 可以檢視我的github[https://github.com/Imfondof/andorid_easyRank],
- 也可以下載這個手機app【https://github.com/Imfondof/andorid_easyRank/blob/master/easyRank.apk】來體驗。
如果你不是很瞭解這個是幹嘛的,可以檢視前人寫過的文章:
- 電影《社交網路》裡那個解除安裝玻璃上的數學公式是什麼公式【http://www.360doc.com/content/14/0620/13/14106735_388316047.shtml
- Elo Rating System簡介及其在遊戲中的運用【https://www.jianshu.com/p/6c772f2e1913】
好了,接下來貼出我的程式碼(很簡陋)(因為我要刪這個檔案了,刪了怪可惜,在這裡儲存一下)
public class zhishu { public static void main(String[] args) { double Ra=2000,Rb=2400; for(int i=1;i<=10;i++){ double Ra0=Ra; Ra=Ra+K(Ra)*(S(1)-E(Ra,Rb)); Rb=Rb+K(Rb)*(S(0)-E(Rb,Ra0)); System.out.println(Ra+" "+Rb+" "+ (Ra+Rb)); } } //返回勝利結果,勝利為1,失敗為0 private static double S(double x){ //如果引數為1,那麼自己贏了;如果引數為0,那麼自己輸了 if(x==1)return 1; return 0; } //計算期望值 private static double E(double Ra,double Rb){ double fenmu=1+Math.pow(10,(Rb-Ra)/400.0); return Math.pow(fenmu, -1); } //判斷實力值 private static double K(double d){ if(d>=2400) return (double) 16.0; if(d>=2100&&d<=2399) return 24.0; if(d>=0&&d<=2100) return 32; return 32; } }