大數求平均值公式

2021-06-07 01:59:54 字數 457 閱讀 6016

方法1、

維護乙個cnt記錄當前資料的個數,evr記錄當前的平均值

然後每增減乙個新資料val時,更新這個cnt和evr的值即可

evr += ((val - evr) / ++cnt);

int main()

; //模擬,每產生乙個數就更新這個cnt和evr

for (i = 0; i < sizeof(d) / sizeof(d[0]); ++i)

cout<

方法2、

設x為已有資料的平均數,n為已有資料的個數,新的資料為y

那麼就是

(x * n + y)/(n+1) =( x * (n+1) - x + y )/(n+1) = x + (y-x)/(n+1);

x + (y-x)/(n+1);這樣就簡單了。用double 應該問題不大。 

其實結果是同方法1的。

參考出處:

hive UDAF求平均值

最近做資料遷移專案,把聚合部分從kettle遷移到hadoop集群上,需要寫很多聚合指令碼 在論壇是看到alipay同事寫過類似cube的udaf,拿過來執行下報錯,有幾個地方沒看多,而且沒有注釋,只好從基礎開始看,自己搞乙個,之前寫過udf所以入手還是聽快的 準備 1 實現自己的udaf需要整合u...

spark 求平均值

val rdd sc.makerdd list a 1 a 2 a 3 b 1 b 2 b 3 b 4 a 4 2 rdd.combinebykey x x,1 x int,int y int x.1 y,x.2 1 x int int y int int x.1 y.1,x.2 y.2 mapva...

MapReduce之求平均值

1 map端讀取檔案資訊內容 在讀取檔案資訊內容時,首先對檔案資訊進行切分,將檔案切分為key和value,便於檔案資訊的計算 override protected void map longwritable key,text value,context context throws ioexcep...