从整数向量中获取平均值

dimitris93

我一直找不到从C ++中的整数向量中获取平均值的方法。

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

我怎样才能有效而迅速地计算出这个?是否有使用C ++语言编写的标准库?

巴里

可行的方法只是用一个足够宽的整数类型求和std::accumulate

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

如果该总和溢出(具有2300万个整数,则平均值必须至少为4.01x10 11-也就是说,它不会溢出,因为这甚至不适合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;
}

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从数组中获取平均值

来自分类Dev

从表中的“最后” N行获取平均值

来自分类Dev

从字典列表中获取平均值

来自分类Dev

从函数结果中获取平均值

来自分类Dev

在mongodb的集合中获取平均值

来自分类Dev

Python,如何从 MySQL 的元组中获取平均值?

来自分类Dev

使用列表获取平均值

来自分类Dev

LINQ从IQueryable获取平均值

来自分类Dev

通过列表获取平均值

来自分类Dev

从EF获取平均值

来自分类Dev

从地图获取平均值条目

来自分类Dev

取平均值

来自分类Dev

JS:每次从整个数组中获取5个项目并获取平均值

来自分类Dev

如何从MySQL中其他2个表起源的表中获取平均值?

来自分类Dev

Ruby合并哈希列表并获取平均值

来自分类Dev

Python:从多个文件的多个列获取平均值

来自分类Dev

从NSManagedObject请求数组获取平均值

来自分类Dev

Bash(awk)-从数字行获取平均值

来自分类Dev

从文本文件获取平均值

来自分类Dev

从多个JSON对象值获取平均值

来自分类Dev

创建Dax度量以获取平均值

来自分类Dev

SQL:使用空值获取平均值

来自分类Dev

用猫鼬查询获取平均值

来自分类Dev

SQL查询以获取平均值之和

来自分类Dev

如何从R获取平均值图

来自分类Dev

Ruby合并哈希列表并获取平均值

来自分类Dev

MongoDB查找给定字段并获取平均值

来自分类Dev

如何获取平均值而忽略字段的某些值

来自分类Dev

使用Aggrerate从Mongo Collection获取平均值