commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alex D Herbert (JIRA)" <j...@apache.org>
Subject [jira] [Created] (RNG-89) Configurable SplitMix generator
Date Wed, 10 Apr 2019 17:19:00 GMT
Alex D Herbert created RNG-89:
---------------------------------

             Summary: Configurable SplitMix generator
                 Key: RNG-89
                 URL: https://issues.apache.org/jira/browse/RNG-89
             Project: Commons RNG
          Issue Type: New Feature
    Affects Versions: 1.3
            Reporter: Alex D Herbert
            Assignee: Alex D Herbert


The {{SplitMix64}} algorithm is based on a [Weyl sequence|[https://en.wikipedia.org/wiki/Weyl_sequence]].
The increment for the sequence is denoted K.

The current implementation uses a fixed increment for the Weyl sequence based on the Golden
ratio ((sqrt(5)-1) / 2). However any odd number in the range [0 - 2^64] can be used to ensure
a full period. 

The JDK SplittableRandom exploits this fact in the split() method which creates a new generator
that has a different increment for the Weyl sequence. The javadoc states that the two outputs
are very unlikely to overlap and have the same statistical properties.

Note that the SplittableRandom adds a further condition that the bit sequence of the increment
K is a random mix of 0s and 1s. If the number of transitions between 0 and 1 or vice versa
is too low then the number of transitions is increased. This ensures the state of the Weyl
sequence is updated across all the bits at each iteration.

Create a new SplitMix64K implementation that uses an additional {{long}} to seed the increment
for the Weyl sequence and test if this viable.

Such a generator would expand the usefulness of the vary fast SplitMix64 generator as the
low likelihood of sequence overlap would make it applicable for use in parallel computations.

 



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

Mime
View raw message