Alex D Herbert created RNG-70:
---------------------------------

             Summary: xoshiro generators
                 Key: RNG-70
                 URL: https://issues.apache.org/jira/browse/RNG-70
             Project: Commons RNG
          Issue Type: New Feature
          Components: core, simple
    Affects Versions: 1.3
            Reporter: Alex D Herbert


The authors of the algorithm implemented in 
{{org.apache.commons.rng.core.source64.XorShift1024Star}} have produced new 
generators as described here:

[xorshiro / xoroshiro generators|http://xoshiro.di.unimi.it]

I propose to implement the *all purpose* algorithms using the following 
classnames:

{code:java}
    source32.XoShiRo128StarStar
    source64.XoRoShiRo128StarStar
    source64.XoShiRo256StarStar
    source64.XoShiRo512StarStar
    source64.XorShift1024Phi
{code}

The algorithms are simple to adapt from the c source code and I have created 
working versions with units tests (analogous to the {{XorShift1024Star}} test).

Each generator must have a corresponding name in the {{RandomSource}} enum. I 
propose:

{code:java}
    XO_SHI_RO_128_SS,
    XO_RO_SHI_RO_128_SS,
    XO_SHI_RO_256_SS,
    XO_SHI_RO_512_SS,
    XOR_SHIFT_1024_PHI,
{code}

Note: XorShift1024Phi is an updated implementation of XorShift1024Star using a 
different multiplier. To share code this could be implemented by moving the 
implementation to an abstract base class for both XorShift1024Phi and 
XorShift1024Star which accepts the multiplier in the constructor.

The authors also provide code for *faster generators* for use in creating 
floating-point random numbers where the lower order bits are discarded. These 
could be named:

{code:java}
    source32.XoShiRo128Plus
    source64.XoRoShiRo128Plus
    source64.XoShiRo256Plus
    source64.XoShiRo512Plus

    XO_SHI_RO_128_PLUS,
    XO_RO_SHI_RO_128_PLUS,
    XO_SHI_RO_256_PLUS,
    XO_SHI_RO_512_PLUS,
{code}

For discussion:

* The names of the generators.
* Should the small state 64-bit generator XoRoShiRo128StarStar be implemented? 
It has a potentially confusing name clash with the 32-bit generator 
XoShiRo128StarStar. Speed is expected to be the same as XoShiRo256Star but 
using only half the memory footprint.
* Should the faster floating-point generators be implemented?




--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to