如何计算C+中的方差、中值和标准差+;还是Java?

如何计算C+中的方差、中值和标准差+;还是Java?,java,c++,math,Java,C++,Math,可能重复: 我有一个双精度向量(1.1,2,3,5)。如何计算方差、中值和标准差 java或C++,甚至伪代码都可以。< p>计算平均值,通过列表/数组的循环,跟踪部分和和长度。然后返回总和/长度 double sum = 0.0; int length = 0; for( double number : numbers ) { sum += number; length++; } return sum/length; 方差的计算方法类似。标准偏差只是方差的平方根: d

可能重复:

我有一个双精度向量(1.1,2,3,5)。如何计算方差、中值和标准差


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

< p>计算平均值,通过列表/数组的循环,跟踪部分和和长度。然后返回
总和/长度

double sum = 0.0;
int length = 0;

for( double number : numbers ) {
    sum += number;
    length++;
}

return sum/length;
方差的计算方法类似。标准偏差只是方差的平方根:

double stddev = Math.sqrt( variance );

为什么中位数不能像其他一样处理数据?@JW8:不,这不是一个很好的实现示例。为什么
size
的类型是
double
median()
的实现也很糟糕。他复制和排序整个数据结构,只是为了找到中间值:/。您应该使用选择算法,例如quickselect@fireboot请随意提供上述实现。我尽量保持简单。这个实现的一个问题是,如果您想要全部三个,您将对数据进行三次传递。我尝试了这个方法,得到的结果与WolframAlpha输出不匹配。平均值是正确的,但方差不是。我在计算时使用了
data.length-1
而不是
size
来获得正确的结果,这些算法可以根据它们的定义轻松实现:--也许我只是不理解这个问题,但如果您按照这些文章中的说明进行操作,您应该会很好。[已经为Java回答了][1][1]当前位置你应该始终表现出你在回答问题时的真诚努力。对于
[家庭作业]
问题尤其如此!请再努力一点!。如果内存可用,则标准偏差为方差的平方根<代码>标准::第n个元素可以找到中间值。对于平均使用
std::acculate
where.size()
这不应标记为重复。这个问题需要代码。“复制”问题需要一个图书馆。。。
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];
    }
}