# Class CellularAutomatonRNG

java.lang.Object
java.util.Random
org.uncommons.maths.random.CellularAutomatonRNG

All Implemented Interfaces:
  `Serializable, RandomGenerator, RepeatableRNG`

public class CellularAutomatonRNG extends 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

## Nested Class Summary

### Nested classes/interfaces inherited from interface RandomGenerator

`RandomGenerator.ArbitrarilyJumpableGenerator, RandomGenerator.JumpableGenerator, RandomGenerator.LeapableGenerator, RandomGenerator.SplittableGenerator, RandomGenerator.StreamableGenerator`

## Constructor Summary

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

## Method Summary

Modifier and Type
Method
Description
`byte[]`
`getSeed()`
`int`
`next(int bits)`

### Methods inherited from class Random

`doubles, doubles, doubles, doubles, from, ints, ints, ints, ints, longs, longs, longs, longs, nextBoolean, nextBytes, nextDouble, nextFloat, nextGaussian, nextInt, nextInt, nextLong, setSeed`

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface RandomGenerator

`equiDoubles, isDeprecated, nextDouble, nextDouble, nextExponential, nextFloat, nextFloat, nextGaussian, nextInt, nextLong, nextLong`

## Constructor Details

### 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 Details

### next

public int next(int bits)

Overrides:
  `next` in class `Random`

### getSeed

public byte[] getSeed()

Specified by:
  `getSeed` in interface `RepeatableRNG`
Returns:
  The seed data used to initialise this pseudo-random number generator.