Details
-
New Feature
-
Status: Open
-
Minor
-
Resolution: Unresolved
-
1.3
-
None
-
None
Description
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.