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)