代码之家  ›  专栏  ›  技术社区  ›  thepip3r

一般-是否有一种方法可以根据现有平均值计算平均值,并为结果平均值提供新参数?

  •  14
  • thepip3r  · 技术社区  · 14 年前

    例如,我们正在计算测试分数的平均值:

    开始考试分数:75、80、92、64、83、99、79

    平均值=572/7=81.714…

    现在给出81.714,如果你不知道最初的测试分数,有没有办法增加一组新的测试分数来“扩展”这个平均值?

    新考试分数:66、89、71

    平均值=226/3=75.333…

    正常平均值为:798/10=79.8

    我试过了:

    Avg = (OldAvg + sumOfNewScores) / (numOfNewScores + 1)
    
    (81.714 + 226) / (3 + 1) = 76.9285
    
    Avg = (OldAvg + NewAvg) / 2
    
    (81.714 + 79.8) / 2 = 80.77
    

    两者都没有达到它“应该”的确切平均值。考虑到你不知道初始值,在数学上可以这样做吗?

    3 回复  |  直到 14 年前
        1
  •  25
  •   duffymo    14 年前

    newAve = ((oldAve*oldNumPoints) + x)/(oldNumPoints+1)
    
        2
  •  5
  •   Vladimir    14 年前

    1st: n scores with average = a1 
    2nd: m scores with average = a2
    

    a1*(1.0*n/(m+n))+a2*(1.0*m/(m+n))
    

    a1*(n/(n+1))+ a2/(n+1)
    
        3
  •  2
  •   starblue    14 年前