[ 
https://issues.apache.org/jira/browse/RNG-70?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16886407#comment-16886407
 ] 

Alex D Herbert commented on RNG-70:
-----------------------------------

{quote}Xorshift1024*, xorshift1024+, xorshift128+ and xoroshiro128+ fail 
statistical tests for linearity
{quote}
Interesting. The [PCG website|http://www.pcg-random.org/blog/] written by the 
same author has some blog discussion on this topic.

Recently we switched to using XorShift1024* for the SeedFactory. This improves 
upon the Well44497b generator for quality of output but it should be noted that 
it is a candidate for replacement if a 'better' RNG is added to the library.

 

> xoshiro generators
> ------------------
>
>                 Key: RNG-70
>                 URL: https://issues.apache.org/jira/browse/RNG-70
>             Project: Commons RNG
>          Issue Type: New Feature
>          Components: core, simple
>            Reporter: Alex D Herbert
>            Assignee: Alex D Herbert
>            Priority: Major
>             Fix For: 1.3
>
>          Time Spent: 1.5h
>  Remaining Estimate: 0h
>
> 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.14#76016)

Reply via email to