最近在做正态分布相关图像是遇到的很多问题
最主要的是以前的很多知识点都忘掉了
方差:各个数据与平均数之差平方和的平均值
标准差:方差的算数平方根
柱状图步骤:
1.找出最大值和最小值
2.分组(可计算也可自己设定一个值)
3.计算组距宽度(组数去除最大值与最小值之差)
4.计算每一组的起始值(第一组初值为最小值减去最小测定单位的一半,末值为初值加组距)
/**
* 计算平均数
*
* @param array
* @return
*/
public static double getAverage(double[] array) {
double sum = 0;
if (array != null && array.length > 0) {
int num = array.length;
for (int i = 0; i < num; i++) {
sum += array[i];
}
return (double) (sum / num);
} else {
return 0d;
}
}
/**
* 计算标准差
*
* @param array
* @param average
* @return
*/
public static double getStandardDevition(double[] array, double average) {
double sum = 0;
if (array != null && array.length > 0) {
int num = array.length;
for (int i = 0; i < num; i++) {
sum += Math.sqrt(((double) array[i] - average) * (array[i] - average));
}
return (sum / (num - 1));
} else {
return 0d;
}
}
/**
* 计算正态值
*
* @param randomNumber
* @param average
* @param standardDevition
* @return
*/
public static double getNormality(double randomNumber, double average, double standardDevition) {
double y = (randomNumber - average) / standardDevition;
double coefficient = 1 / (Math.sqrt(2 * Math.PI) * standardDevition);
double z = Math.exp(-0.5 * y * y) * coefficient;
return z;
}
}
/**
* 对double数组进行降序排
*
* @param array
* @return
*/
public static double[] downSort(double[] array) {
for (int i = 0; i < array.length - 1; i++) { // 最多做n-1趟排序
for (int j = 0; j < array.length - i - 1; j++) { // 对当前无序区间score[0......length-i-1]进行排序(j的范围很关键,这个范围是在逐步缩小的)
if (array[j] < array[j + 1]) { // 把小的值交换到后面
double temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
return array;
}
/**
* 返回某个区间的数出现的次数
*
* @param array
* @param ele
* @return
*/
public static int inCounts(double[] array, BigDecimal leftEle, BigDecimal rightEle) {
int count = 0;
for (int i = 0; i < array.length; i++) {
double ele = array[i];
BigDecimal eleBd = new BigDecimal(ele + "");
if ((eleBd.compareTo(leftEle) == 1 || eleBd.compareTo(leftEle) == 0) && eleBd.compareTo(rightEle) == -1) {
count++;
}
}
return count;
}