You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Alex Herbert (Jira)" <ji...@apache.org> on 2019/11/25 17:14:00 UTC

[jira] [Comment Edited] (RNG-124) Create fixed increment PCG generators

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

Alex Herbert edited comment on RNG-124 at 11/25/19 5:13 PM:
------------------------------------------------------------

I have completed the stress test runs using Dieharder, BigCrush and PractRand for the fixed increment PCG generators.

For reference I included the results of the same generators with a variable increment.
{noformat}
RNG                     Dieharder       ∩       TestU01 (BigCrush)      ∩       PractRand       ∩
PCG_XSH_RR_32           0,0,0,0,0               0,0,0,0,0                       -,-,-            
PCG_XSH_RS_32           0,0,0,0,0               0,1,2,1,0                       41,-,-           
PCG_RXS_M_XS_64         0,0,0,0,0               0,1,0,0,0                       -,-,-            

PCG_XSH_RR_32_OS        0,0,0,0,0               0,0,1,0,0                       -,-,-            
PCG_XSH_RS_32_OS        0,0,0,0,0               0,0,1,0,0                       -,-,-            
PCG_RXS_M_XS_64_OS      0,0,0,0,0               0,0,0,1,2                       -,-,- 
{noformat}
This is as expected. These generators do not systematically fail any of these tests when using a variable increment. They are fine with the default increment.

For reference the total run time for the tests are:
{noformat}
DH: Sum = 0 days 11:02:44.93 
TU: Sum = 2 days 23:00:00.43 
PR: Sum = 2 days 13:40:47.10
{noformat}
PractRand was run on a different faster machine. However the timings show that the 3 runs of PractRand are roughly equivalent to 5 runs of BigCrush in CPU time.


was (Author: alexherbert):
I have completed the stress test runs using Dieharder, BigCrush and PractRand for the fixed increment PCG generators.

For reference I included the results of the same generators with a variable increment.
{noformat}
RNG                     Dieharder       ∩       TestU01 (BigCrush)      ∩       PractRand       ∩
PCG_XSH_RR_32           0,0,0,0,0               0,0,0,0,0                       -,-,-            
PCG_XSH_RS_32           0,0,0,0,0               0,1,2,1,0                       41,-,-           
PCG_RXS_M_XS_64         0,0,0,0,0               0,1,0,0,0                       -,-,-            

PCG_XSH_RR_32_OS        0,0,0,0,0               0,0,1,0,0                       -,-,-            
PCG_XSH_RS_32_OS        0,0,0,0,0               0,0,1,0,0                       -,-,-            
PCG_RXS_M_XS_64_OS      0,0,0,0,0               0,0,0,1,2                       -,-,- 
{noformat}
This is as expected. These generators do not systematically fail any of these tests when using a variable increment. They are fine with the default increment.

> Create fixed increment PCG generators
> -------------------------------------
>
>                 Key: RNG-124
>                 URL: https://issues.apache.org/jira/browse/RNG-124
>             Project: Commons RNG
>          Issue Type: Improvement
>          Components: core, simple
>    Affects Versions: 1.3
>            Reporter: Alex Herbert
>            Assignee: Alex Herbert
>            Priority: Trivial
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> The increment of the PCG generator serves to select the underlying linear congruential generator (LCG) from 2 classes of related generators. Thus initialisation of generators using different increments can result in PCG output with massive correlations. The result is that seeding with 128-bits does not reduce the chance of correlated output over seeding with just 64-bits and using a fixed increment. See RNG-123.
> Create a fixed increment version of the three PCG generators which currently accept the increment in their seed:
> {noformat}
> PCG_XSH_RR_32    => PCG_XSH_RR_32_OS
> PCG_XSH_RS_32    => PCG_XSH_RS_32_OS
> PCG_RXS_M_XS_64  => PCG_RXS_M_XS_64_OS
> {noformat}
> Here the {{_OS}} suffix represents One Sequence. The equivalent PCG generators in the reference c++ source code have a _oneseq suffix.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)