大量滾動數據求平均

今天寫一個程序,遇到一個求平均值的需求,數據不斷的產生,若是記錄全部數據,須要的存儲空間是不可能的,好比我要計算消息的響應時延,一次程序運行將至少會有上億次消息發送,存儲每一次的響應時間,最後求平均,是不現實的。程序員

在網上搜索找到一個公式,並經過EXCEL作了計算,驗證了該公式的有效性,計算結果與實際算術平臺值偏差爲零(通過後面的公式演算,其實,他的偏差必須爲零,haha),固然,個人測試樣本只有26次,小樣本都有如此高的精度,我想是沒問題的了。測試

公式以下:spa

假設須要求平均的序列爲Data[1], Data[2], Data[3]...Data[n]...設計

前n薦所求平均值爲Avg[n]教程

算術平均爲:rem

Avg[n] = (Data[1]+Data[2]+Data[3]+...+Data[n])/n數學

簡單計算公式:for循環

Avg[n] = ((n-1)*Avg[n-1] + Data[n])/n程序設計

具體公式的數學基礎,我正在尋找中,若有知道的朋友,請告知我。基礎

--通過晚上的冷靜,思考,我發現我程序員思惟已經很僵化了,一直以來,老師在教程序設計時,都會用從1+100應該用一個for循環來編寫,在數學上,其實就是一個簡單的等差數列求和公司能夠搞定,像這裏討論的計算平均值,其它背後的數字真是簡單的要命,而習慣擺度的我,從網上找到了上面的公式是如此的大呼神奇!而不多對一些經常使用的數字概念,哪怕一丁點,也懶得至思考了!我驚呼!

數字公式推算以下:

相關文章
相關標籤/搜索