加权平均的最有效方法

时间:2019-08-25 21:44:30

标签: algorithm performance

我从事计算机模拟工作,并经常在每个代理(对象)内重复使用加权平均值。我想知道这样做是否可能比现在更有效。

下面是一些伪代码,以显示我当前如何完成任务:

Parameters:
x - first value to be averaged
y - second value to be averaged
weight - percent (from 0 to 1) that weighs the values being averaged


Code:
foo = x * weight
bar = y * (1-weight)
return foo+bar

我知道乘法是一种非常轻量级的操作,但是鉴于模拟的性质(成千上万的代理/对象经常运行该操作),我很想知道是否还有其他想法。

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以避免乘法:

  x * weight + y * (1 - weight)      // 2 multiplications, 1 addition, 1 subtraction
= x * weight + y - y * weight
= x * weight - y * weight + y
= (x - y) * weight + y               // 1 multiplication, 1 addition, 1 subtraction

除此以外,我们还需要更多地了解周围的代码,输入值,如何使用结果,不使用结果的频率,所需的精度/精度等。