Tag: Java 统计函数 方差 标准差 public class TestStatistics { 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 input * Data 输入数据数组 * @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 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; } }
|