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)