在游戏的开发过程中,我们会用到很多的算法,其中数学中的线性回归可以很好地运用到一些游戏里,下面是由PHP写的一段计算线性回归的方程式的代码:
线性回归LinearRegression
计算线性回归方程式Y=a+bX
如果两组数据相关系数很高,可以用一条近似直线Y=a+bX来预估,谓之线性回归
根据统计学理论,Y=a+bX中
斜率b=X,Y离均差交乘积和/X离均差平方和
常数项a=Y平均值-b*X平均值
header("Content-Type:text/html;charset=utf-8");
if(empty($_REQUEST["X"])){
?>
X:
Y:
}else{
$X=explode(",",$_REQUEST["X"]);
$Y=explode(",",$_REQUEST["Y"]);
$xavg=array_sum($X)/count($X);//X平均值
$yavg=array_sum($Y)/count($Y);//Y平均值
$XMD=Array();//X离均差
$YMD=Array();//Y离均差
$mdcross_sum=0;//X,Y离均差交乘积和
$xdif_square_sum=0;//X离均差平方和
$count=count($X);
for($i=0;$i
$xdif=(float)$X[$i]-$xavg;//X离均差
$ydif=(float)$Y[$i]-$yavg;//Y离均差
$XMD[$i]=$xdif;
$YMD[$i]=$ydif;
$mdcross_sum+=$xdif*$ydif;//X,Y离均差交乘积和
$xdif_square_sum+=pow($xdif,2);//X离均差平方和
}//endoffor
$b=round($mdcross_sum/$xdif_square_sum,2);//计算斜率b
$a=round($yavg-$b*$xavg,2);//计算常数项a
echo"X=".join(",",$X)."
";
echo"Y=".join(",",$Y)."
";
echo"常数项a=".$a."
";
echo"斜率b=".$b."
";
echo"线性回归方程式Y=".$a."+(".$b.")X
";
echo"X平均值=".$xavg."
";
echo"Y平均值=".$yavg."
";
echo"X离均差=".join(",",$XMD)."
";
echo"Y离均差=".join(",",$YMD)."
";
echo"X,Y离均差交乘积和=".$mdcross_sum."
";
echo"X离均差平方和=".$xdif_square_sum."
";
}
echo'
';
echo'计算两点之间的角度。';
$a=array('x'=>10,'y'=>0);
$c=array('x'=>80,'y'=>80);
$pi_v=atan2($c['y']-$a['y'],$c['x']-$a['x']);
$n_v=rad2deg($pi_v);
echo'弧度:',$pi_v,'角度:',$n_v;
?>