gpt4 book ai didi

c++ - 从整数 vector 中获取平均值

转载 作者:可可西里 更新时间:2023-11-01 18:03:50 59 4
gpt4 key购买 nike

我一直无法找到一种方法从 C++ 中的整数 vector 中获取平均值。

我不可能开始添加所有值,因为我可能会超过可接受的最大整数值。

我怎样才能高效快速地计算这个? C++ 语言中是否有任何标准库可以做到这一点?

最佳答案

首选方法只是用足够宽的整数类型与 std::accumulate 求和:

double avg1(std::vector<int> const& v) {
return 1.0 * std::accumulate(v.begin(), v.end(), 0LL) / v.size();
}

如果这个总和溢出(有 2300 万个整数,平均值必须至少为 4.01x1011 - 也就是说,它不会溢出,因为这甚至不适合 int32_t... 所以你很好,但在极少数情况下你会得到几个数量级的数字,或者有更宽的 int 类型),那么您可以改为使用常见的“在线”算法来计算平均值:

double avg2(std::vector<int> const& v) {
int n = 0;
double mean = 0.0;
for (auto x : v) {
double delta = x - mean;
mean += delta/++n;
}
return mean;
}

这不会溢出,不太容易丢失精度,但由于重复的额外除法可能会更昂贵。

关于c++ - 从整数 vector 中获取平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35833360/

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