1.根据既定的一组数据,求这组数据的标准差:
//根据指定的数组数据获得数据的标准差
public static float getStanardDeviation(Integer[] array){
float ave = 0.0f;
for (int i = 0; i < array.length; i++)
ave += array[i];
ave /= array.length;
float sum = 0.0f;
for(int i = 0;i<array.length;i++)
sum += (array[i] - ave) * (array[i] - ave) ;
sum /= array.length;
//System.out.println("平均值="+ave+",方差="+sum+",标准差="+Math.sqrt(sum));
return (float)(Math.round((float) Math.sqrt(sum)*100))/100;
}
2.根据指定的条件,得到一个满足条件的的标准差:
/* 根据要求产生一个达到标准的标准差
* arrayLen:数据长度
* maxDiff:数据之间最大允许的绝对差
* maxQty:最多允许与其他数据maxDiff的个数
*/
public static float getComparedDeviation(int arrayLen,int maxDiff,int maxQty){
if(arrayLen>=maxQty){
Integer[] array=new Integer[arrayLen];
//填充数组数据为方法参数指定的格式
for(int i = 0;i<arrayLen;i++) {
if(i<maxQty){
array[i]=maxDiff;
}else
array[i]=0;
}
float std=ProtocalFormatter.getStanardDeviation(array);
float result =(float)(Math.round(std*100))/100;
return result;
}
return 0;
}