gpt4 book ai didi

c++ - 如何计算均值(平均)robuSTLy?

转载 作者:可可西里 更新时间:2023-11-01 15:38:29 30 4
gpt4 key购买 nike

如果我们天真地计算均值:

std::vector<double> values;
double sum = std::accumulate(begin(values), end(values), 0.0);
double mean = sum / values.size();

values.size() 很大,我们可能会得到不准确的结果,因为 float 在较高范围内分辨率较低。或者更糟,如果我理解正确,我们可以获得无限的结果。

当我们有一个偶数的值时,我们可以计算前半部分的平均值,然后计算后半部分的平均值,然后找到这两个平均值的平均值

这似乎不是一个新问题,但我很难找到资源。我认为有更复杂的技术

权衡
  • 稳健性
  • 计算复杂度
  • 实现难度

我想知道是否有人在某处总结了它们,或者如果它们在某些中可用,甚至更好。

最佳答案

您可以使用描述的在线算法 here .

基本上(在 pythonish 伪代码中):

n = 0
mean = 0

for value in data:
n += 1
mean += (value - mean)/n

该算法在数值上比单纯的实现更稳定。

关于c++ - 如何计算均值(平均)robuSTLy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23813278/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com