Archive for April 2009

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 [...]