I've attached a prototype diff-proposal where I've changed
AbstractContinuousDistribution and AbstractIntegerDistribution, and
implemented the nextExponential on the ExponentialDistribution as an
example of overwriting the nextSample-method from the
Abstract-distributions.

Only AbstractContinuousDistribution and AbstractIntegerDistribution
extends AbstractDistribution, and both AbstractIntegerDistribution and
AbstractContinuousDistribution has an
inverseCumulativeProbability-function. But in
AbstractContinuousDistribution the inverse cdf returns a double, and
at AbstractIntegerDistribution it - naturally - returns an integer.
Therefor the nextSample is not put on AbstractDistribution, but on
each extension with different return types.

RandomGenerator as parameter instead of getting a RNG inside the
nextSample, because one typically wants to use the same RNG because
often several random samples are wanted. Another option is to have a
RNG as a field in the class, but that would be more ugly and also
result in several RNGs at runtime.

I found an error as well. In RandomDataImpl, mean < 0 throws
exception, whereas in the distribution implementation an exception is
thrown if mean <= 0. RandomDataImpl is corrected to <= in because that
is the correct definition.

The function nextExponential couldn't - without further notice - be
removed from RandomDataImpl, because nextPoisson and the ValueServer
uses the function directly. So here is an issue. nextPoisson can
create a ExponentialDistribution and sample from that. ValueServer
could do the same, but what to you think about it?

As mentioned, the diff is only a prototype hence no formal patch
submitted. And no tests has been made neither. But should I report a
bug or supply a separate patch on the small mean-problem in
nextExponential in RandomDataImpl?

Cheers, Mikkel.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to