我的语言是 PHP,但算法应该是相当通用的。

我有一个(比方说)评分和评分次数的关联数组。

$ratings = array(
    1 => 1,
    2 => 3,
    3 => 6,
    4 => 3,
    5 => 3
);

这相当于: [1, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 5, 5, 5] ,但考虑到我正在处理的数字,从第一种形式转换为第二种形式会非常低效。

计算上述数字的平均值的算法是什么?

最佳答案

试试这个:

$total = 0;
$count = 0;
foreach($ratings as $number=>$frequency) {
  $total += $number * $frequency;
  $count += $frequency;
}
return $total / $count;

关于php - 如何计算加权平均值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/490365/

10-15 17:43