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)

Reply via email to