Empirical distribution.
The probability distribution function (pdf) must be provided by the user as
an array of positive real numbers. The pdf does not need to be provided in
the form of relative probabilities, absolute probabilities are also accepted.
If interpolationType == LINEAR_INTERPOLATION a linear interpolation
within the bin is computed, resulting in a constant density within each bin.
If interpolationType == NO_INTERPOLATION no interpolation is
performed and the result is a discrete distribution.
Instance methods operate on a user supplied uniform random number generator;
they are unsynchronized.
Static methods operate on a default uniform random number generator; they
are synchronized.
Implementation: A uniform random number is generated using a user
supplied generator. The uniform number is then transformed to the user's
distribution using the cumulative probability distribution constructed from
the pdf. The cumulative distribution is inverted using a binary search for
the nearest bin boundary.
This is a port of RandGeneral used in CLHEP 1.4.0 (C++).