Uploaded image for project: 'Commons RNG'
  1. Commons RNG
  2. RNG-89

Configurable SplitMix generator

    XMLWordPrintableJSON

Details

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

       

      Attachments

        Activity

          People

            aherbert Alex Herbert
            aherbert Alex Herbert
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: