Keeping a running average
I needed to average a lot of large values and was afraid that the normal approach of a+b+c..etc/N would overflow or something.
So here’s a C++ class to keep a running average:
class InfiniteRunningAverage
{
double average;
double valueCount;
public:
InfiniteRunningAverage()
{
average = 0.0;
valueCount = 1;
}
void Add(double value)
{
average = average * ((valueCount-1.0)/valueCount) + value * (1.0/valueCount);
valueCount += 1.0;
}
double Get()
{
return average;
}
};
Hmm. I guess eventually valueCount will get so big that new values will have no effect. So it can’t really be considered an infinite running average.
Thanks – helped a lot :)