commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alex D Herbert (JIRA)" <>
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
             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|[]].
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

View raw message