数学平均与PHP

Mar*_*cus 15 php math average

是时候测试你的数学技能......

我正在使用php来查找$ num1,$ num2,$ num3等的平均值; 没有数量的数字.然后它将该平均值保存到数据库中.

下次调用php脚本时,会向混合中添加一个新数字.

是否有一个数学(很可能是代数)方程,我可以用来找到包含新数字的原始数字的平均值.或者我是否需要将原始数字保存在数据库中,以便我可以查询它们并重新计算整组数字?

小智 52

array_sum($values) / count($values)
Run Code Online (Sandbox Code Playgroud)


sle*_*man 13

如果你的平均值是什么意思,你不想存储所有数字然后存储数字的数量:

$last_average = 100;
$total_numbers = 10;
$new_number = 54;

$new_average = (($last_average * $total_numbers) + $new_number) / ($total_number + 1);
Run Code Online (Sandbox Code Playgroud)

  • 这将导致不断增加的准确性损失.使用$ last_total而不是$ last_average.看迈克的回答. (7认同)
  • $ total_numbers是指定问题的**必需**实现细节.要么实现它,要么问题无法解决. (4认同)

Mik*_*ike 12

Average = Sum / Number of values
Run Code Online (Sandbox Code Playgroud)

只需存储所有3个值,就不需要任何复杂的操作.

如果您存储AverageSum再计算Number of values你会失去一点点的准确性,由于平均的截断.

如果您存储AverageNumber of values然后计算Sum你就会失去更多的精度.您有误差计算正确值更多余地Number of values不是Sum由于它是一个整数.


Ham*_*eza 6

<?php
function avrg()
{
 $count = func_num_args();
 $args = func_get_args();
 return (array_sum($args) / $count);
}
?>
Run Code Online (Sandbox Code Playgroud)

http://php.net/manual/en/function.array-sum.php#101727