Class JavaRNG

  • All Implemented Interfaces:
    java.io.Serializable, RepeatableRNG

    public class JavaRNG
    extends java.util.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:
    Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private byte[] seed  
      private static int SEED_SIZE_BYTES  
    • Constructor Summary

      Constructors 
      Constructor Description
      JavaRNG()
      Creates a new RNG and seeds it using the default seeding strategy.
      JavaRNG​(byte[] seed)
      Creates an RNG and seeds it with the specified seed data.
      JavaRNG​(SeedGenerator seedGenerator)
      Seed the RNG using the provided seed generation strategy.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private static long createLongSeed​(byte[] seed)
      Helper method to convert seed bytes into the long value required by the super class.
      byte[] getSeed()
      • Methods inherited from class java.util.Random

        doubles, doubles, doubles, doubles, ints, ints, ints, ints, longs, longs, longs, longs, next, nextBoolean, nextBytes, nextDouble, nextFloat, nextGaussian, nextInt, nextInt, nextLong, setSeed
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • seed

        private final byte[] seed
    • Constructor Detail

      • 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 Detail

      • 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.