Some month ago, I came out with an article about Benfords Law. This article deals with the summation and product formula based implementation in C. The algorithm is indeed cool for small statistical games, but not nice to use, when you have a set of numbers.

So, I developed a small class, that serves this need. Furthermore, this class is able to calculate the geometrical, harmonical and quadratical averages.

After including (require, include) this class, you can create a new object with

\$benford = new Benford(array(1341,82,141,215), 10);

The first parameter is the array with the values to calculate. The second parameter is the basis of the number system. This parameter is 10 by default. (10 means a normal number system from 0..9). You can add more values with:

or simply:

After that, you have two options:

You can perform a run through the given set of numbers and get back the values of the Benford calculation. The second option is to use an average function. When calling an average function, the run()-function will be also called internally.

Get back an array with the Benford calculation:

\$benford = new Benford(array(232, 211, 410, 301, 508, 192));

\$result = \$benford->run();

This returns an array with all the Benford results from the given data. Below you can see the code to perform the average functions.

\$benford = new Benford(array(232, 211, 410, 301, 508, 192));

\$result_harm = \$benford->getHarmonicalAverage();

\$result_geom = \$benford->getGeometricalAverage();