版权声明:转载请标明出处哦 https://blog.csdn.net/easy_purple/article/details/85197965
之前看过电影社交网络,里边的一个算法很吸引我,也可以说是一个数学公式,于是就用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;
}
}