Php ile Matematik ortalama

8 Cevap php

Sizin matematik becerilerini test etme zamanı ...

Ben $ num1, $ num2, $ num3 ve böylece ortalamasını bulmak için php kullanıyorum; sayıları bir tanımsız miktarda kadar. Daha sonra, bir veritabanına ortalama kaydeder.

Php script yeni numara denir dahaki sefere karışıma ilave edilir.

Ben yeni numarası ile orijinal sayıların ortalama dahil bulmak için kullanabileceğiniz bir matematik (büyük olasılıkla cebir) denklemi var. Ya da ben bu yüzden onları sorgulayabilir ve birlikte sayıların tüm demet yeniden hesaplamak veritabanındaki orijinal numaraları kaydetmek gerekiyor?

8 Cevap

Ne ortalama demek ortalama ve tüm sayıları saklamak istemiyorsanız, daha sonra sayı miktar saklamak:

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

$new_average = (($last_average * $total_numbers) + $new_number) / ($total_number + 1);
Average = Sum / Number of values

Sadece 3 değerlerini depolamak, karmaşık bir şey için gerek yok.

Eğer Average depolamak ve Sum ardından hesaplarsanız Number of values nedeniyle Ortalama yuvarlandığı biraz doğruluk kaybedersiniz.

Eğer Average depolamak ve Number of values ardından hesaplarsanız Sum daha bile doğruluğunu kaybedersiniz. Bunu bir tamsayı olmak Sum sayesinde daha Number of values için doğru bir değer hesaplanmasında hata için daha fazla marj var.

<?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

Eğer eski toplamını hesaplayabilirsiniz sayıların miktarını biliyorsanız, eski miktarı artı tek yenisini ve bölün.

$oldsum = $average * $amount;
$newaverage = ($oldsum + $newnum) / ($amount + 1);

Genellikle ne yapabilir iki parça bilgi kurtaracak:

  • tüm sayıların toplamı
  • sayıların sayısı

Eğer, ortalama almak (tabii, sayısı == 0 durumu için dikkat çekici) sayısı ile toplamı bölmek istediğinizde. Eğer yeni bir numara eklemek istediğiniz zaman, toplamı yeni numara eklemek ve 1 tarafından sayısını artırmak.

Bu, bir "hareketli ortalama bulur 'ya da' moving average 'olarak adlandırılır.

Veritabanı ortalama and değerlerin sayısı ortalama saklar ise, her yeni bir değer için yeni bir çalışan ortalama hesaplamak mümkün olacaktır.

Benim işlevi paylaşmak gerektiğini düşündüm

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

var_dump( avg(array_sum($values),count($values)) );

Ortalama dönmek ve ayrıca dikkate 0 ve diğer özel durumlarda içine alacak

1/0 hep Sonsuz döndürür. 0/0 döner NaN

Siz veritabanındaki tüm orijinal numaraları kaydetmek gerekir.