Class DotyHumphreySmallFastCounting64

java.lang.Object
org.apache.commons.rng.core.BaseProvider
org.apache.commons.rng.core.source64.LongProvider
org.apache.commons.rng.core.source64.DotyHumphreySmallFastCounting64
All Implemented Interfaces:
RandomLongSource, RestorableUniformRandomProvider, UniformRandomProvider

public class DotyHumphreySmallFastCounting64 extends LongProvider
Implement the Small, Fast, Counting (SFC) 64-bit generator of Chris Doty-Humphrey. The original source is the PractRand test suite by the same author.

The state size is 256-bits; the period is a minimum of 264 and an average of approximately 2255.

Since:
1.3
See Also:
  • Field Details

    • SEED_SIZE

      private static final int SEED_SIZE
      Size of the seed.
      See Also:
    • a

      private long a
      State a.
    • b

      private long b
      State b.
    • c

      private long c
      State c.
    • counter

      private long counter
      Counter.
  • Constructor Details

    • DotyHumphreySmallFastCounting64

      public DotyHumphreySmallFastCounting64(long[] seed)
      Creates an instance with the given seed.
      Parameters:
      seed - Initial seed. If the length is larger than 3, only the first 3 elements will be used; if smaller, the remaining elements will be automatically set.
  • Method Details

    • setSeedInternal

      private void setSeedInternal(long[] seed)
      Seeds the RNG.
      Parameters:
      seed - Seed.
    • next

      public final long next()
      Return the next random value.
      Returns:
      the next random value.
    • getStateInternal

      protected byte[] getStateInternal()
      Creates a snapshot of the RNG state.
      Overrides:
      getStateInternal in class LongProvider
      Returns:
      the internal state.
    • setStateInternal

      protected void setStateInternal(byte[] s)
      Resets the RNG to the given state.
      Overrides:
      setStateInternal in class LongProvider
      Parameters:
      s - State (previously obtained by a call to BaseProvider.getStateInternal()).
      See Also: