2017-01-02 41 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