On Sat, 26 Dec 2015 15:32:04 -0700, Phil Steitz wrote:
On 12/26/15 10:52 AM, Gilles wrote:
Hi.

There are currently two RNG hierarchies: "AbstractRandomGenerator"
and
"BitsStreamGenerator". They both implement the "RandomGenerator"
interface.

In both classes, the "nextBytes(byte[])" method generates 4 bytes
at a time.
Thus, functionally the code is the same, even though one calls
"nextInt" and
the other "next(32)" (which is what its "nextInt()" also calls).

I propose that a new base class implements "nextBytes" (and
perhaps other
methods that can be coded in a generic way):
  https://issues.apache.org/jira/browse/MATH-1307

Are there objections?

Hey sorry I did not think to raise this possibility before, but it
could be we are letting archeaology complicate design here.  In 4.0
we can clean up what I think may be an early mistake.  The reason
that we have two hierarchies here is that AbstractRandomGenerator
predates BitStreamGenerator.  The AbstractRandomGenerator somewhat
iconoclastically basis things on nextDouble() while
BitStreamGenerator uses the more standard int next(int bits).  Note
that we have *no* internal direct implementations of
AbstractRandomGenerator, while BitStreamGenerator has worked very
nicely as a root for good PRNGs.

Do you mean that "BitsStreamGenerator" can be the base class for
any RNG?

Therefore, I think for V4 it might actually be best to just drop
AbstractRandomGenerator.  Sorry I did not think of this before
responding above.

Hmm.
Should I wait for confirmation before scratching it?

Then I have another question concerning "JDKRandomGenerator": it does
not fit in the hierarchy.

Gilles


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

Reply via email to