我从事计算机模拟工作,并经常在每个代理(对象)内重复使用加权平均值。我想知道这样做是否可能比现在更有效。
下面是一些伪代码,以显示我当前如何完成任务:
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
我知道乘法是一种非常轻量级的操作,但是鉴于模拟的性质(成千上万的代理/对象经常运行该操作),我很想知道是否还有其他想法。
谢谢!
答案 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
除此以外,我们还需要更多地了解周围的代码,输入值,如何使用结果,不使用结果的频率,所需的精度/精度等。