Class PcgXshRs32

All Implemented Interfaces:
RandomIntSource, RestorableUniformRandomProvider, UniformRandomProvider

public class PcgXshRs32 extends AbstractPcg6432
A Permuted Congruential Generator (PCG) that is composed of a 64-bit Linear Congruential Generator (LCG) combined with the XSH-RS (xorshift; random shift) output transformation to create 32-bit output.

State size is 128 bits and the period is 264.

Note: Although the seed size is 128 bits, only the first 64 are effective: in effect, two seeds that only differ by the last 64 bits may produce highly correlated sequences.

Since:
1.3
See Also:
  • Constructor Details

    • PcgXshRs32

      public PcgXshRs32(Long seed)
      Creates a new instance using a default increment.
      Parameters:
      seed - Initial state.
      Since:
      1.4
    • PcgXshRs32

      public PcgXshRs32(long[] seed)
      Creates a new instance.

      Note: Although the seed size is 128 bits, only the first 64 are effective: in effect, two seeds that only differ by the last 64 bits may produce highly correlated sequences.

      Parameters:
      seed - Initial seed. If the length is larger than 2, only the first 2 elements will be used; if smaller, the remaining elements will be automatically set.

      The 1st element is used to set the LCG state. The 2nd element is used to set the LCG increment; the most significant bit is discarded by left shift and the increment is set to odd.

  • Method Details

    • transform

      protected int transform(long x)
      Transform the 64-bit state of the generator to a 32-bit output. The transformation function shall vary with respect to different generators.
      Specified by:
      transform in class AbstractPcg6432
      Parameters:
      x - State.
      Returns:
      the output