获得长双精度矢量的方差

时间:2018-03-15 00:31:16

标签: 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();

例如,如果我的向量是{1,2,3,4,5},则上面的代码给出了2.25。据我所知,正确答案是2。

感谢任何帮助,我不确定我缺少什么。

1 个答案:

答案 0 :(得分:3)

x < (v.size() - 1)?这会跳过最后一个元素。使用<=或省略- 1

元素的索引是v.size() - 1,由于x必须小于该值,因此循环在最后一个元素处理之前中断。