求十億個數的平均數的方法

2021-06-29 12:57:42 字數 450 閱讀 5541

在討論區中看到的,感覺不錯記錄下來。

1)關於演算法,我想了乙個簡單的思路,分治+遞迴:

1、設定乙個餘數區pub,初始為0。

2、每n(n=100)個數取均值。計算時將公共餘數pub計入。所得整數部分作為均值,餘數部分設為餘數區。

3、計算下一組n個數,計算方法同上。

4、將10億個數計算完畢後,將餘下10億/100=1000萬個數。

5、將餘數區內的值pub/n,重新記入餘數區。

重複1~5,進行遞迴計算,其中n可以動態規劃。假設n一直為100,則進行4次計算後,則餘下了10個數及1個餘數。

整體上,資料訪問的次數將控制在約1.01次,時間複雜度也相對較小。

同時,由於分組的方法,該演算法可以做多執行緒/分布式。

2)如果可以知道預估的平均數,對每個數減去乙個預估的平均數,然後求和。

這樣和就在0附近了,然後結果再加回去。

案例 求平均數

需求 編寫乙個方法,實現任意數求平均數 去除數字收納櫃的最大和最小,然後在算平均數,保留小數點後兩位 普通版本 letfn function 給ary排序,去除首未,ary.sort function a,b ary.pop ayr.shift 然後求和,最後求平均 let total 0 for ...

加權幾何平均數 平均數的認識

一 概念描述 現代數學 平均數分為算術平均數 加權平均數 幾何平均數 調和平均數 指數平均數和平方平均數等。在小學數學中常用的平均數主要是算術平均數和加權平均數,它們都是統計學的基本概念,因常用於計算樣本的集中趨勢,所以也分別叫作樣本算術平均數 值 和樣本加權算術平均數 值 小學數學 小學數學教材中...

求兩個整型數的平均數

兩數相加除以2 這種寫法是簡單將兩個數相加,然後除以2。include int main 這種 是有弊端的,當x y的值大於2147483674時會發生溢位 32位機器上int佔4個位元組,範圍是 2147483648 2147483674 這種情況下兩個正數求出的平均值就是負數!如下 includ...