1. 程式人生 > >《社交網路》裡的數學公式elo rating system埃洛等級分系統(java實現)

《社交網路》裡的數學公式elo rating system埃洛等級分系統(java實現)

之前看過電影社交網路,裡邊的一個演算法很吸引我,也可以說是一個數學公式,於是就用java實現了一下。

除此,我還利用這個演算法,做了一個應用,用於選出我喜歡的音樂等等.

如果你不是很瞭解這個是幹嘛的,可以檢視前人寫過的文章:

好了,接下來貼出我的程式碼(很簡陋)(因為我要刪這個檔案了,刪了怪可惜,在這裡儲存一下)

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;
	}
}