This is a post to ask about what we want "Commons RNG"
to be (as a service to the users).

In the Wikipedia pages referred to in the following
the take-away message (IIUC) is that LCG and LFG are
almost never to be used.[1]

If we want "Commons RNG" to be a repository of all
generators that exist out there, irrespective of their
known weaknesses, it's fine; but we should be careful to
not let casual users just pick one of the implementations
on the premise that the library focuses on high quality

On the other hand, we could be wary of adding code[2]
that we'd then recommend to not use...

If, from some POV, it is deemed useful to have those,
the scope and overview of the component should mention,
prominently, the "caveat".[3]

I have no issue with adding any new implementation,[4]
on the conditions that it comes with
 1. a unit test where the output (say, a few hundred
    numbers) of "Commons RNG" is compared against a
    "reference" implementation,[5]
 2. the outputs of the "RandomStressTester"[6] piping
    from the "Dieharder" and "TU01/BigCrush" actual
    stress test suites.[7]

We should add a note to that effect somewhere in the
documentation, perhaps in "CONTRIBUTING.md" (?).


[1] Emmanuel, if you don't mind, we'd thus set the JIRA
    issue "type" to "wish" rather than "improvement".
[2] https://xkcd.com/221/
[3] Up to now, I had assumed that no known-to-be-bad
    generators would be part of "Commons RNG" (except
    "JDK", for reference purposes).
[4] It is not a problem to wait another couple of weeks
    for the additional code, before releasing 1.0.
[5] I.e. _not_ a "pre-run" of the same implementation!
[6] Source is in "src/userguide/java".
[7] Those software have to be installed separately.

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

Reply via email to