commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Phil Steitz <>
Subject Re: [Math] New base class for all RNGs
Date Sat, 26 Dec 2015 22:32:04 GMT
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):
> 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.

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

> Regards,
> Gilles
> ---------------------------------------------------------------------
> To unsubscribe, e-mail:
> For additional commands, e-mail:

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message