java - 什么是计算所有值的总和超过 double 限制的平均值的好解决方案?

标签 java algorithm statistics

我需要计算一组非常大的 double 的平均值(10^9 个值)。值的总和超过了 double 的上限,那么有谁知道计算平均值的任何巧妙的小技巧,而不需要计算总和?

我使用的是 Java 1.5。

最佳答案

您可以calculate the mean iteratively .该算法简单、快速,每个值只需处理一次,变量永远不会大于集合中的最大值,因此不会溢出。

double mean(double[] ary) {
  double avg = 0;
  int t = 1;
  for (double x : ary) {
    avg += (x - avg) / t;
    ++t;
  }
  return avg;
}

在循环内 avg 始终是迄今为止处理的所有值的平均值。换句话说,如果所有的值都是有限的,你就不应该出现溢出。

关于java - 什么是计算所有值的总和超过 double 限制的平均值的好解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1930454/

相关文章:

c++ - 在不使用堆栈的情况下从中缀表达式构建二叉树

r - 如何生成具有不同边际分布的多元随机数?

algorithm - 有没有一种算法可以动态生成迷宫,确保总有更多的地方可以去?

java - com.fasterxml.jackson.databind.exc.MismatchedInputException : Cannot deserialize instance of Object out of START_ARRAY token

java - Java中的抽象类与接口(interface)

java - MySQLNonTransientConnectionException : Could not create connection to database server. 尝试重新连接 3 次。放弃

algorithm - hackerrank偶数树解法讲解(偶数节点的森林)

javascript - 谷歌分析会降低我的网站速度吗?

r - 将星号添加到 p 值

java - 看来我可以*在定义之前引用一个字段*