常用統計函式Java版
阿新 • • 發佈:2019-01-03
import java.util.Arrays;
public class Hello {
public static void main(String[] args) {
double [] testData=new double[]{1,2,3,4,5,6,7,8,9};
System.out.println("最大值:"+getMax(testData));
System.out.println("最小值:"+getMin(testData));
System.out.println("計數:"+getCount(testData));
System.out.println("求和:" +getSum(testData));
System.out.println("求平均:"+getAverage(testData));
System.out.println("方差:"+getVariance(testData));
System.out.println("標準差:"+getStandardDiviation(testData));
}
/**
* 求給定雙精度陣列中值的最大值
*
* @param inputData 輸入資料陣列
* @return 運算結果,如果輸入值不合法,返回為-1
*/
public static double getMax(double[] inputData) {
if (inputData == null || inputData.length == 0) {
return -1;
}
int len = inputData.length;
double max = inputData[0];
for (int i = 0; i < len; i++) {
if (max < inputData[i]) {
max = inputData[i];
}
}
return max;
}
/**
* 求求給定雙精度陣列中值的最小值
*
* @param inputData 輸入資料陣列
* @return 運算結果,如果輸入值不合法,返回為-1
*/
public static double getMin(double[] inputData) {
if (inputData == null || inputData.length == 0) {
return -1;
}
int len = inputData.length;
double min = inputData[0];
for (int i = 0; i < len; i++) {
if (min > inputData[i]) {
min = inputData[i];
}
}
return min;
}
/**
* 求給定雙精度陣列中值的和
*
* @param inputData 輸入資料陣列
* @return 運算結果
*/
public static double getSum(double[] inputData) {
if (inputData == null || inputData.length == 0) {
return -1;
}
int len = inputData.length;
double sum = 0;
for (int i = 0; i < len; i++) {
sum = sum + inputData[i];
}
return sum;
}
/**
* 求給定雙精度陣列中值的數目
*
* @param inputData 輸入資料陣列
* @return 運算結果
*/
public static int getCount(double[] inputData) {
if (inputData == null) {
return -1;
}
return inputData.length;
}
/**
* 求給定雙精度陣列中值的平均值
*
* @param inputData 輸入資料陣列
* @return 運算結果
*/
public static double getAverage(double[] inputData) {
if (inputData == null || inputData.length == 0) {
return -1;
}
int len = inputData.length;
double result;
result = getSum(inputData) / len;
return result;
}
/**
* 求給定雙精度陣列中值的平方和
*
* @param inputData 輸入資料陣列
* @return 運算結果
*/
public static double getSquareSum(double[] inputData) {
if(inputData == null || inputData.length == 0) {
return -1;
}
int len = inputData.length;
double sqrsum = 0.0;
for (int i = 0; i < len; i++) {
sqrsum = sqrsum + inputData[i] * inputData[i];
}
return sqrsum;
}
/**
* 求給定雙精度陣列中值的方差
*
* @param inputData 輸入資料陣列
* @return 運算結果
*/
public static double getVariance(double[] inputData) {
int count = getCount(inputData);
double sqrsum = getSquareSum(inputData);
double average = getAverage(inputData);
double result;
result = (sqrsum - count * average * average) / count;
return result;
}
/**
* 求給定雙精度陣列中值的標準差
*
* @param inputData 輸入資料陣列
* @return 運算結果
*/
public static double getStandardDiviation(double[] inputData) {
double result;
//絕對值化很重要
result = Math.sqrt(Math.abs(getVariance(inputData)));
return result;
}
}