1. 程式人生 > >常用統計函式Java版

常用統計函式Java版

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; } }