首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用std::C++不正确的标准差计算

使用std::C++不正确的标准差计算
EN

Stack Overflow用户
提问于 2016-07-21 18:41:05
回答 1查看 526关注 0票数 2

我使用以下代码计算标准差:

代码语言:javascript
运行
复制
std::vector<float> k = {4,6,2};
float mean = 4;

float sum = std::accumulate(k.begin(), k.end(), 0, [&mean](float x, float y) {
    return (y - mean) * (y - mean);
});

float variance = sum / k.size();
float stdev = sqrt(variance);

std::accumulate应该返回时,它返回4

代码语言:javascript
运行
复制
(4-4)^2 + (6-4)^2 + (2-4)^2 = 8

此外,打印(y - mean) * (y - mean)提供:

代码语言:javascript
运行
复制
0
4
4

那么,它为什么不返回0 + 4 + 4

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-21 18:45:26

您不使用x参数。尝试以下几点:

代码语言:javascript
运行
复制
float sum = std::accumulate(k.begin(), k.end(), 0.0F, [&mean](float x, float y) {
    return x + (y - mean) * (y - mean);
});

更新: init值作为浮动

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38512027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档