You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Gilles (JIRA)" <ji...@apache.org> on 2016/03/13 02:05:33 UTC

[jira] [Created] (MATH-1338) Does "EmpiricalDistribution" use "RandomDataGenerator"?

Gilles created MATH-1338:
----------------------------

             Summary: Does "EmpiricalDistribution" use "RandomDataGenerator"?
                 Key: MATH-1338
                 URL: https://issues.apache.org/jira/browse/MATH-1338
             Project: Commons Math
          Issue Type: Bug
            Reporter: Gilles
            Priority: Blocker
             Fix For: 4.0


The class {{EmpiricalDistribution}} (in package "o.a.c.m.random") holds an instance field ("randomData") of type {{RandomDataGenerator}}.
The documentation of this field indicates that it is only used for sampling, and indeed the field is only accessed in order to fetch the RNG object stored in it. 
It is unclear why {{RandomDataGenerator}} was needed to hold a RNG since the same RNG could have been (in the current design) readily available in the base class.

Sampling is performed in method {{getNextValue()}} (which in turn calls {{sample()}} in the parent class).
{{getNextValue()}} performs a precondition check before calling {{sample()}} and raises a CM specific {{MathIllegalStateException}}; but the inherited {{sample()}} method can be still called directly on the instance, and in that case, if the (same) condition is not fulfilled, a standard {{NullPointerException}} will be thrown instead.

In line with MATH-1158, the sampling functionality should be accessed through the {{RealDistribution.Sampler}} interface, and {{getNextValue()}} is to be removed as it duplicates the common API (i.e. the {{sample()}} method).

Since the RNG is then passed to the {{createSampler}} factory method, the "randomData" field becomes obsolete.




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)