[
https://issues.apache.org/jira/browse/MATH-310?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12842614#action_12842614
]
Gilles commented on MATH-310:
-----------------------------
> Not being able to reseed the PRNG is a pretty serious limitation when
> generating random data.
As I said, for those who need rich features, they can use them with your
preferred option, namely through directly instantiating an object of type
"RandomData".
> Having to maintain and document random data generation in two places [...]
This just reduces to e.g.
---CUT---
public class PoissonDistributionImpl extends ... {
/**
* Provide basic sampling functionality. This method directly calls the
* the {...@link RandomData#nextPoisson() nextPoisson} method in {...@link
RandomData}.
* For more control, please use that class directly.
* @see {...@link RandomDataImpl}.
*/
long nextSample() { randomData.nextPoisson(); }
}
---CUT---
> Making the distribution classes [...] stateful [...]
This is really an "implementation detail" (as it is completely hidden), that
is, if you accept that users cannot access the RNG machinery from this side.
> Supply nextSample for all distributions with inverse cdf using inverse
> transform sampling approach
> --------------------------------------------------------------------------------------------------
>
> Key: MATH-310
> URL: https://issues.apache.org/jira/browse/MATH-310
> Project: Commons Math
> Issue Type: Improvement
> Affects Versions: 2.0
> Reporter: Mikkel Meyer Andersen
> Priority: Minor
> Attachments: patch_proposal
>
> Original Estimate: 3h
> Remaining Estimate: 3h
>
> To be able to generate samples from the supported probability distributions,
> a generic function nextSample is implemented in
> AbstractContinuousDistribution and AbstractIntegerDistribution. This also
> gives the possibility to override the method if better algorithms are
> available for specific distributions as shown in the small example with the
> exponential distribution.
> Because the nextExponential is used several places: in nextPoisson it can be
> replaces by an instance if the ExponentialDistribution and in ValueServer it
> can as well, although maybe not in as natural maner as the other.
> This problem with the Exponential is a special problem. In general the
> nextSample-approaches immediately gives the possibility the sample from all
> the distributions with inverse cdf instead just only a couple.
> 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.
> The nextPoisson etc. ought to be moved as well, if the enhancement is
> accepted, but it should be a quick fix.
> Tests has to be written for this change as well.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.