Class AbstractL64X128

    • Field Detail

      • XBG_STATE_SIZE

        private static final int XBG_STATE_SIZE
        Size of the XBG state vector.
        See Also:
        Constant Field Values
      • x0

        protected long x0
        State 0 of the XBG.
      • x1

        protected long x1
        State 1 of the XBG.
    • Constructor Detail

      • AbstractL64X128

        AbstractL64X128​(long[] seed)
        Creates a new instance.
        Parameters:
        seed - Initial seed. If the length is larger than 4, only the first 4 elements will be used; if smaller, the remaining elements will be automatically set. A seed containing all zeros in the last two elements will create a non-functional XBG sub-generator and a low quality output with a period of 264.

        The 1st element is used to set the LCG increment; the least significant bit is set to odd to ensure a full period LCG. The 2nd element is used to set the LCG state.

      • AbstractL64X128

        AbstractL64X128​(long seed0,
                        long seed1,
                        long seed2,
                        long seed3)
        Creates a new instance using a 4 element seed. A seed containing all zeros in the last two elements will create a non-functional XBG sub-generator and a low quality output with a period of 264.

        The 1st element is used to set the LCG increment; the least significant bit is set to odd to ensure a full period LCG. The 2nd element is used to set the LCG state.

        Parameters:
        seed0 - Initial seed element 0.
        seed1 - Initial seed element 1.
        seed2 - Initial seed element 2.
        seed3 - Initial seed element 3.
      • AbstractL64X128

        AbstractL64X128​(AbstractL64X128 source)
        Creates a copy instance.
        Parameters:
        source - Source to copy.
    • Method Detail

      • getStateInternal

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

        public UniformRandomProvider jump()
        Creates a copy of the UniformRandomProvider and then retreats the state of the current instance. The copy is returned.

        The jump is performed by advancing the state of the LCG sub-generator by 1 cycle. The XBG state is unchanged.

        The jump size is the equivalent of moving the state backwards by (2128 - 1) positions. It can provide up to 264 non-overlapping subsequences.

        Specified by:
        jump in interface JumpableUniformRandomProvider
        Overrides:
        jump in class AbstractL64
        Returns:
        A copy of the current state.
      • longJump

        public JumpableUniformRandomProvider longJump()
        Creates a copy of the UniformRandomProvider and then retreats the state of the current instance. The copy is returned.

        The jump is performed by advancing the state of the LCG sub-generator by 232 cycles. The XBG state is unchanged.

        The jump size is the equivalent of moving the state backwards by 232 (2128 - 1) positions. It can provide up to 232 non-overlapping subsequences of length 232 (2128 - 1); each subsequence can provide up to 232 non-overlapping subsequences of length (2128 - 1) using the jump() method.

        Specified by:
        longJump in interface LongJumpableUniformRandomProvider
        Overrides:
        longJump in class AbstractL64
        Returns:
        A copy of the current state.