2017-01-02 40 views
0

(語言PHP - 這個問題是任何語言,特別是我使用PHP) 例如,你有一個數字就像一個數組:如何在不知道總項目的情況下逐步計算平均值?

$q = array(1, 2, 3, 4, 5, ...); // ... mean you can give more numbers 
$i = 0; 
$currentAverage = 0; 
while ($i < count($q)) { 
    $currentAverage = ($currentAverage + $q[$i])/2; // this is my try 
    $i++; 
} 

echo "The final average is: " . $currentAverage . "<br/>"; 

Obviusly,您可以通過count($q)分的總和,但是這不是這個想法。

我希望你能幫助我!謝謝。

+0

我不明白這一點。你能解釋一下你爲什麼想這麼做嗎? – CUGreen

+0

您是否正在尋找從第一項到第n項平均值的數組? (例如1,1.5,2,2.5) – BizzyBob

+0

@BizzyBob我想要總平均值,但不能總和,我試圖做一個增量平均值。 –

回答

2

可以使用此:

$q = array(1, 2, 3, 4, 5, ...); // ... mean you can give more numbers 
$i = 0; 
$currentAverage = 0; 
while ($i < count($q)) { 
    $sliceArr = array_slice($q, 0, $i+1); 
    $currentAverage = array_sum($sliceArr)/count($sliceArr); 
    $i++; 
} 

echo "The final average is: " . $currentAverage . "<br/>"; 
1

無法計算「增量」不知道項目總數意味着平均補上的平均水平。

例如,如果您有10件平均爲5件的產品,並且您想要添加下一件產品X,則必須爲新添加的產品指定適當的「重量」。

例如,爲了獲得下一個平均,你會做

(currentAverage * currentNumberOfItems + X)/(currentNumberOfItems + 1) 

如果說X是7,新平均將

(5 * 10 + 7)/(10 + 1) 
= (50 + 7)/11 
= 57/11 
= 5.181818182 

這是不可能做到這一點不知道當前構成平均數(10)的項目數量


要顯示出你以增量方式這方面的工作,這裏是一個for循環,跟蹤的平均作爲循環運行

$xs = [1,2,3,4,5]; 
$average = $xs[0]; 
for ($count = 1; $count < count($xs); $count++) { 
    echo sprintf("average: %0.3f, count: %d" . PHP_EOL, $average, $count); 
    $average = ($average * $count + $xs[$count])/($count + 1); 
} 

average: 1.000, count: 1 
average: 1.500, count: 2 
average: 2.000, count: 3 
average: 2.500, count: 4