Overview | Package | Class | Tree | Deprecated | Index | Help
| SSJ V. 2.1.1.
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## umontreal.iro.lecuyer.rng
Class RandRijndael

    java.lang.Object
      umontreal.iro.lecuyer.rng.RandomStreamBase
          umontreal.iro.lecuyer.rng.RandRijndael

All Implemented Interfaces:
  Serializable, Cloneable, CloneableRandomStream, RandomStream

    public class RandRijndael

extends RandomStreamBase

Implements a RNG using the Rijndael block cipher algorithm (AES) with key and block lengths of 128 bits. A block of 128 bits is encrypted by the Rijndael algorithm to generate 128 pseudo-random bits. Those bits are split into four words of 32 bits which are returned successively by the method `nextValue`. The unencrypted block is the state of the generator. It is incremented by 1 at every four calls to `nextValue`. Thus, the period is 2130 and jumping ahead is easy. The values of V, W and Z are 240, 242 and 282, respectively (see `RandomStream` for their definition). Seeds/states must be given as 16-dimensional vectors of bytes (8-bit integers). The default initial seed is a vector filled with zeros.

The Rijndael implementation used here is that of the Cryptix Development Team, which can be found on the Rijndael creators' page .

See Also:
  Serialized Form

Constructor Summary
`RandRijndael()` Constructs a new stream.
`RandRijndael(String name)` Constructs a new stream with the identifier `name` (used in the `toString` method).

Method Summary
`RandRijndael` | `clone()` Clones the current generator and return its copy.
`byte[]` | `getState()` Returns the current state of the stream, represented as an array of four integers.
`void` | `resetNextSubstream()` Reinitializes the stream to the beginning of its next substream: Ng is computed, and Cg and Bg are set to Ng.
`void` | `resetStartStream()` Reinitializes the stream to its initial state Ig: Cg and Bg are set to Ig.
`void` | `resetStartSubstream()` Reinitializes the stream to the beginning of its current substream: Cg is set to Bg.
`static void` | `setPackageSeed(byte[] seed)` Sets the initial seed for the class `RandRijndael` to the 16 bytes of the vector `seed[0..15]`.
`void` | `setSeed(byte[] seed)` This method is discouraged for normal use.
`String` | `toString()` Returns a string containing the current state of this stream.

Methods inherited from class umontreal.iro.lecuyer.rng.RandomStreamBase
`formatState, formatStateFull, increasedPrecision, nextArrayOfDouble, nextArrayOfInt, nextDouble, nextInt`

Methods inherited from class java.lang.Object
`equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Constructor Detail

### RandRijndael

    public RandRijndael()

  Constructs a new stream.

### RandRijndael

    public RandRijndael(String name)

  Constructs a new stream with the identifier `name` (used in the `toString` method).

  Parameters:
    `name` - name of the stream

Method Detail

### setPackageSeed

    public static void setPackageSeed(byte[] seed)

  Sets the initial seed for the class `RandRijndael` to the 16 bytes of the vector `seed[0..15]`. This will be the initial state (or seed) of the next created stream. The default seed for the first stream is (0, 0,…, 0, 0).

  Parameters:
    `seed` - array of 16 elements representing the seed

### setSeed

    public void setSeed(byte[] seed)

  This method is discouraged for normal use. Initializes the stream at the beginning of a stream with the initial seed `seed[0..15]`. This method only affects the specified stream; the others are not modified, so the beginning of the streams will not be spaced Z values apart. For this reason, this method should only be used in very exceptional cases; proper use of the `reset...` methods and of the stream constructor is preferable.

  Parameters:
    `seed` - array of 16 elements representing the seed

### getState

    public byte[] getState()

  Returns the current state of the stream, represented as an array of four integers. It should be noted that each state of this generator returns 4 successive values. The particular value of these 4 which will be returned next is not given by this method.

  Returns:
    the current state of the stream

### clone

    public RandRijndael clone()

  Clones the current generator and return its copy.

  Specified by:
    `clone` in interface `CloneableRandomStream`
  Overrides:
    `clone` in class `RandomStreamBase`
  Returns:
    A deep copy of the current generator

### resetStartStream

    public void resetStartStream()

  Description copied from interface: `RandomStream`
  Reinitializes the stream to its initial state Ig: Cg and Bg are set to Ig.

  Specified by:
    `resetStartStream` in interface `RandomStream`
  Specified by:
    `resetStartStream` in class `RandomStreamBase`

### resetStartSubstream

    public void resetStartSubstream()

  Description copied from interface: `RandomStream`
  Reinitializes the stream to the beginning of its current substream: Cg is set to Bg.

  Specified by:
    `resetStartSubstream` in interface `RandomStream`
  Specified by:
    `resetStartSubstream` in class `RandomStreamBase`

### resetNextSubstream

    public void resetNextSubstream()

  Description copied from interface: `RandomStream`
  Reinitializes the stream to the beginning of its next substream: Ng is computed, and Cg and Bg are set to Ng.

  Specified by:
    `resetNextSubstream` in interface `RandomStream`
  Specified by:
    `resetNextSubstream` in class `RandomStreamBase`

### toString

    public String toString()

  Description copied from interface: `RandomStream`
  Returns a string containing the current state of this stream.

  Specified by:
    `toString` in interface `RandomStream`
  Specified by:
    `toString` in class `RandomStreamBase`
  Returns:
    the state of the generator formated as a string

Overview | Package | Class | Tree | Deprecated | Index | Help
| SSJ V. 2.1.1.
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

To submit a bug or ask questions, send an e-mail to Pierre L'Ecuyer.