C++ 求长倍向量的方差

C++ 求长倍向量的方差,c++,variance,C++,Variance,我想计算长双精度向量的方差。我尝试过实现我见过的其他代码,但它没有返回正确的值 long double variance = 0; for (int x = 0; x < (v.size() - 1); x++) { variance += (v.at(x) - mean) * (v.at(x) - mean); } variance /= v.size(); 长双方差=0; 对于(int x=0;x

我想计算长双精度向量的方差。我尝试过实现我见过的其他代码,但它没有返回正确的值

long double variance = 0;
for (int x = 0; x < (v.size() - 1); x++) {
    variance += (v.at(x) - mean) * (v.at(x) - mean);
}
variance /= v.size();
长双方差=0;
对于(int x=0;x<(v.size()-1);x++){
方差+=(v.at(x)-平均值)*(v.at(x)-平均值);
}
方差/=v.大小();
例如,如果我的向量是{1,2,3,4,5},上面的代码给出了2.25。据我所知,正确答案是2


非常感谢您的帮助,我不确定我缺少了什么。

x<(v.size()-1)
?这将跳过最后一个元素。使用
x<(v.size()-1)
?这将跳过最后一个元素。使用
Oh。那是个愚蠢的错误。这是一个愚蠢的错误。尽量不要使用显式for循环,尽量使用类似transform的STL算法。问题的精确解决方法是尽量不要使用显式for循环,尽量使用STL算法,比如转换。您的问题的精确解决方案