
Nelis Franken wrote:
Hi,
I've been looking into statistical distributions, and while comparing Wikipedia's mathematical formulation and Boost's implementation of the Exponential Distribution, I have found two points of interest. Before continuing, I just need to add that I'm not a statistician or a mathematician, so any errors either mathematical or in interpretation below are my own.
The Wikipedia reference: http://en.wikipedia.org/wiki/Exponential_distribution
The Boost implementation (line 54 of exponential_distribution.hpp) -result_type(1) / _lambda * log(result_type(1)-eng());
Where the eng() call generates a uniform random number.
The first, less critical point: If eng() is uniform, then so is (1 - eng()), which allows for the simplification of the statement passed to log() from: log(result_type(1)-eng()) to log(eng())
The second, more critical point: The implementation does not seem to be the correct inverse of the original function. Boost's implementation (with above modification) is: -result_type(1) / _lambda * log(eng());
But should actually be: -log(eng()) / _lamda;
Could someone perhaps clarify the above? Again, apologies if my interpretations were wrong.
No you are correct on both counts I believe, I'm cc'ing the random lib's author: Jens, any comments? John.