18

あなたの数学のスキルをテストする時間...

私はphpを使用して、$ num1、$ num2、$num3などの平均を見つけています。未設定の数まで。次に、その平均をデータベースに保存します。

次回phpスクリプトが呼び出されると、新しい番号がミックスに追加されます。

新しい数を含めた元の数の平均を見つけるために使用できる数学(おそらく代数)方程式はありますか?または、元の数値をデータベースに保存して、それらにクエリを実行し、数値の束全体を一緒に再計算できるようにする必要がありますか?

4

11 に答える 11

65
array_sum($values) / count($values)
于 2010-11-16T19:32:15.750 に答える
14

平均で意味するのが「平均」であり、すべての数値を保存したくない場合は、それらの数を保存します。

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

$new_average = (($last_average * $total_numbers) + $new_number) / ($total_numbers + 1);
于 2010-01-10T02:17:54.960 に答える
12
Average = Sum / Number of values

3つの値すべてを保存するだけで、複雑なことは何も必要ありません。

を保存してから計算するAverageと、平均が切り捨てられるため、精度が少し低下します。SumNumber of values

を保存してから計算するAverageと、さらに精度が低下します。整数であるため、正しい値を計算する際の許容誤差が大きくなります。Number of valuesSumNumber of valuesSum

于 2010-01-10T02:20:09.090 に答える
4
<?php
function avrg()
{
 $count = func_num_args();
 $args = func_get_args();
 return (array_sum($args) / $count);
}
?>

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

于 2011-12-05T12:50:03.603 に答える
3

私は自分の機能を共有すべきだと思った

function avg($sum=0,$count=0){
    return ($count)? $sum / $count: NAN;
}
var_dump( avg(array_sum($values),count($values)) );

平均を返し、0も考慮します。たとえば、ゼロで割ると常にNaN(数値ではない)が返されます。

1/0 = NaN
0/0 = NaN

于 2013-08-02T14:22:58.927 に答える
1

古い合計を計算できる数値の量がわかっている場合は、新しい数値を加算し、古い金額に1を加えたもので割ります。

$oldsum = $average * $amount;
$newaverage = ($oldsum + $newnum) / ($amount + 1);
于 2010-01-10T02:19:27.413 に答える
1

通常、あなたがするかもしれないことは2つの情報を保存することです:

  • すべての数字の合計
  • 数の数

平均を取得したいときはいつでも、合計をカウントで割ります(もちろん、カウント== 0の場合に注意してください)。新しい数値を含める場合は常に、新しい数値を合計に追加し、カウントを1ずつ増やします。

于 2010-01-10T02:20:41.603 に答える
0

これは「ランニングアベレージ」または「移動平均」と呼ばれます。

データベースに平均と平均された値の数が格納されている場合、新しい値ごとに新しい移動平均を計算することができます。

于 2010-01-10T02:21:34.540 に答える
0
function avgvals($avg_vals,$avg_delimiter=',') { 
 if ( (is_string($avg_vals) && strlen($avg_vals) > 2) && (is_string($avg_delimiter) && !empty($avg_delimiter)) ) { 
    $average_vals = explode($avg_delimiter, $avg_vals); 
        $return_vals = ( array_sum($average_vals) / count($average_vals) ); 
 } elseif ( (is_string($avg_vals) && strlen($avg_vals) <= 2) && (is_string($avg_delimiter) && !empty($avg_delimiter)) ) { 
        $return_vals = $avg_vals; 
 } else { 
        $return_vals = FALSE; 
 } 
   return $return_vals; 
}
于 2011-10-26T14:34:54.067 に答える
0

コード:

function avg($list){
    $sum = array_sum($list);
    $count = count($list);
  return ($count)? $sum / $count: NAN;
}
print ("Average: ".avg([1,2,3,4,5]));

出力:

Average: 3
于 2021-01-27T18:28:21.830 に答える
-3

元の番号をすべてデータベースに保存する必要があります。

于 2010-01-10T02:19:09.780 に答える