gpt4 book ai didi

javascript - 数组的加权平均值

转载 作者:行者123 更新时间:2023-11-30 07:43:25 24 4
gpt4 key购买 nike

我必须用 JavaScript 编写以下加权平均公式:

Average = (p1*p2*x1 + p3*p4*x2 + ... +p(n-2)*p(n-1)*xn) / (p1*p2 + p3*p4 + ... + p(n-2)p(n-1) )

该公式给出了 x 值的平均值。

我还有一个 array 填充了 JavaScript 中的 n 元素:

Array = (p1,p2,x1,p3,p4,x2....)

...其中 pi 是权重,xi 是我想要求平均值的值。

如何使用这个数组编写公式?

最佳答案

我可能会使用以下策略:

  • 创建两个新数组(可能是 weightsvalues)。
  • 以 3 步迭代原始数组;将 pn 相乘并将结果插入 weights 并将 xn 插入 values
  • 遍历新数组,创建加权总数(除法左侧)和总权重(除法右侧)。
  • 将一个除以另一个。完成。

换句话说,像这样:

function weighted_average(input) {
var weights = [];
var values = [];
var weighted_total = 0;
var total_weight = 0;;

if (input.length % 3 !== 0) {
throw new Error("Input array length is not a multiple of 3.");
}

for (var i = 0; i < input.length; i += 3) {
weights.push(input[i] * input[i + 1]);
values.push(input[i + 2]);
}

for (var i = 0; i < weights.length; i += 1) {
weighted_total += weights[i] * values[i];
total_weight += weights[i];
}

return weighted_total / total_weight;
}

不过,您必须验证这是否完全符合您的要求。没有保证。 ;)

JSFiddle 演示:jsfiddle.net/Z8seZ

当然,您可以跳过中间数组以使其更快一些。但上面的内容更明确,更易读,因此更易于维护(例如,您可以轻松地拆分实际算法并为不同形式的输入创建不同的“包装器”函数)。我只会在处理(真正的)大型数据集时对其进行优化。

关于javascript - 数组的加权平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11866869/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com