Class CellularAutomatonRNG

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

    public class CellularAutomatonRNG
    extends java.util.Random
    implements RepeatableRNG

    Java port of the cellular automaton pseudorandom number generator developed by Tony Pasqualoni.

    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
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private static int convertCellsToInt​(int[] cells, int offset)  
      byte[] getSeed()
      int next​(int bits)
      • Methods inherited from class java.util.Random

        doubles, doubles, doubles, doubles, ints, ints, ints, ints, longs, longs, longs, longs, 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

      • RNG_RULE

        private static final int[] RNG_RULE
      • seed

        private final byte[] seed
      • cells

        private final int[] cells
      • lock

        private final java.util.concurrent.locks.ReentrantLock lock
      • currentCellIndex

        private int currentCellIndex
    • Constructor Detail

      • CellularAutomatonRNG

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

        public CellularAutomatonRNG​(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.
      • CellularAutomatonRNG

        public CellularAutomatonRNG​(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

      • next

        public int next​(int bits)
        Overrides:
        next in class java.util.Random
      • getSeed

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

        private static int convertCellsToInt​(int[] cells,
                                             int offset)