Class XoRoShiRo1024PlusPlus

  • All Implemented Interfaces:
    RandomLongSource, org.apache.commons.rng.JumpableUniformRandomProvider, org.apache.commons.rng.LongJumpableUniformRandomProvider, org.apache.commons.rng.RestorableUniformRandomProvider, org.apache.commons.rng.UniformRandomProvider

    public class XoRoShiRo1024PlusPlus
    extends LongProvider
    A large-state all-purpose 64-bit generator.

    This is a member of the Xor-Shift-Rotate family of generators. Memory footprint is 1024 bits and the period is 21024-1.

    Note: This can be used as a replacement for XorShift1024Star.

    Since:
    1.3
    See Also:
    Original source code, xorshiro / xoroshiro generators
    • Constructor Detail

      • XoRoShiRo1024PlusPlus

        public XoRoShiRo1024PlusPlus​(long[] seed)
        Creates a new instance.
        Parameters:
        seed - Initial seed. If the length is larger than 16, only the first 16 elements will be used; if smaller, the remaining elements will be automatically set. A seed containing all zeros will create a non-functional generator.
    • Method Detail

      • transform

        protected long transform​(long s0,
                                 long s15)
        Transform the two consecutive 64-bit states of the generator to a 64-bit output. The transformation function shall vary with respect to different generators.
        Parameters:
        s0 - The current state.
        s15 - The previous state.
        Returns:
        the output
      • getStateInternal

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

        public long next()
        Return the next random value.
        Specified by:
        next in interface RandomLongSource
        Returns:
        the next random value.
      • jump

        public org.apache.commons.rng.UniformRandomProvider jump()

        The jump size is the equivalent of 2512 calls to nextLong(). It can provide up to 2512 non-overlapping subsequences.

        Specified by:
        jump in interface org.apache.commons.rng.JumpableUniformRandomProvider
      • longJump

        public org.apache.commons.rng.JumpableUniformRandomProvider longJump()

        The jump size is the equivalent of 2768 calls to nextLong(). It can provide up to 2256 non-overlapping subsequences of length 2768; each subsequence can provide up to 2256 non-overlapping subsequences of length 2512 using the JumpableUniformRandomProvider.jump() method.

        Specified by:
        longJump in interface org.apache.commons.rng.LongJumpableUniformRandomProvider