如何计算C ++或Java中的方差,中位数和标准差?

可能重复:
简单统计 – 用于计算均值,标准差等的Java包

我有一些双打的矢量(1.1,2,3,5)。 如何计算方差,中位数和标准差?

Java或C ++甚至伪代码都可以。

public class Statistics { double[] data; int size; public Statistics(double[] data) { this.data = data; size = data.length; } double getMean() { double sum = 0.0; for(double a : data) sum += a; return sum/size; } double getVariance() { double mean = getMean(); double temp = 0; for(double a :data) temp += (a-mean)*(a-mean); return temp/(size-1); } double getStdDev() { return Math.sqrt(getVariance()); } public double median() { Arrays.sort(data); if (data.length % 2 == 0) return (data[(data.length / 2) - 1] + data[data.length / 2]) / 2.0; return data[data.length / 2]; } } 

要计算平均值,请遍历列表/数组,跟踪部分总和和长度。 然后返回sum/length

 double sum = 0.0; int length = 0; for( double number : numbers ) { sum += number; length++; } return sum/length; 

方差的计算方法类似。 标准差只是方差的平方根:

 double stddev = Math.sqrt( variance );