I am trying to find a way to calculate a moving cumulative average without storing the count and total data that is received so far.
I came up with two algorithms but both need to store the count:
- new average = ((old count * old data) + next data) / next count
- new average = old average + (next data - old average) / next count
The problem with these methods is that the count gets bigger and bigger resulting in losing precision in the resulting average.
The first method uses the old count and next count which are obviously 1 apart. This got me thinking that perhaps there is a way to remove the count but unfortunately I haven't found it yet. It did get me a bit further though, resulting in the second method but still count is present.
Is it possible, or am I just searching for the impossible?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…