Class JavaRNG

java.lang.Object
java.util.Random
org.uncommons.maths.random.JavaRNG
All Implemented Interfaces:
Serializable, RandomGenerator, RepeatableRNG

public class JavaRNG extends Random implements RepeatableRNG

This is the default JDK RNG extended to implement the RepeatableRNG interface (for consistency with the other RNGs in this package).

The MersenneTwisterRNG should be used in preference to this class because it is statistically more random and performs slightly better.

NOTE: Instances of this class do not use the seeding mechanism inherited from Random. Calls to the Random.setSeed(long) method will have no effect. Instead the seed must be set by a constructor.

See Also:
  • Field Details

    • SEED_SIZE_BYTES

      private static final int SEED_SIZE_BYTES
      See Also:
    • seed

      private final byte[] seed
  • Constructor Details

    • JavaRNG

      public JavaRNG()
      Creates a new RNG and seeds it using the default seeding strategy.
    • JavaRNG

      public JavaRNG(SeedGenerator seedGenerator) throws SeedException
      Seed the RNG using the provided seed generation strategy.
      Parameters:
      seedGenerator - The seed generation strategy that will provide the seed value for this RNG.
      Throws:
      SeedException - If there is a problem generating a seed.
    • JavaRNG

      public JavaRNG(byte[] seed)
      Creates an RNG and seeds it with the specified seed data.
      Parameters:
      seed - The seed data used to initialise the RNG.
  • Method Details

    • createLongSeed

      private static long createLongSeed(byte[] seed)
      Helper method to convert seed bytes into the long value required by the super class.
    • getSeed

      public byte[] getSeed()
      Specified by:
      getSeed in interface RepeatableRNG
      Returns:
      The seed data used to initialise this pseudo-random number generator.