SSJ  3.3.1
Stochastic Simulation in Java
Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Package Functions | List of all members
RandRijndael Class Reference

Implements a RNG using the Rijndael block cipher algorithm (AES) with key and block lengths of 128 bits. More...

Inheritance diagram for RandRijndael:
[legend]
Collaboration diagram for RandRijndael:
[legend]

Public Member Functions

 RandRijndael ()
 Constructs a new stream.
 
 RandRijndael (String name)
 Constructs a new stream with the identifier name (used in the toString method). More...
 
void setSeed (byte seed[])
 This method is discouraged for normal use. More...
 
byte [] getState ()
 Returns the current state of the stream, represented as an array of four integers. More...
 
RandRijndael clone ()
 Clones the current generator and return its copy. More...
 
void resetStartStream ()
 Reinitializes the stream to its initial state \(I_g\): \(C_g\) and \(B_g\) are set to \(I_g\).
 
void resetStartSubstream ()
 Reinitializes the stream to the beginning of its current substream: \(C_g\) is set to \(B_g\).
 
void resetNextSubstream ()
 Reinitializes the stream to the beginning of its next substream: \(N_g\) is computed, and \(C_g\) and \(B_g\) are set to \(N_g\).
 
String toString ()
 Returns a string containing the current state of this stream. More...
 
- Public Member Functions inherited from RandomStreamBase
abstract void resetStartStream ()
 Reinitializes the stream to its initial state \(I_g\): \(C_g\) and \(B_g\) are set to \(I_g\).
 
abstract void resetStartSubstream ()
 Reinitializes the stream to the beginning of its current substream: \(C_g\) is set to \(B_g\).
 
abstract void resetNextSubstream ()
 Reinitializes the stream to the beginning of its next substream: \(N_g\) is computed, and \(C_g\) and \(B_g\) are set to \(N_g\).
 
abstract String toString ()
 Returns a string containing the current state of this stream. More...
 
void increasedPrecision (boolean incp)
 After calling this method with incp = true, each call to the RNG (direct or indirect) for this stream will return a uniform random number with more bits of precision than what is returned by nextValue, and will advance the state of the stream by 2 steps instead of 1 (i.e., nextValue will be called twice for each random number). More...
 
double nextDouble ()
 Returns a uniform random number between 0 and 1 from the stream. More...
 
void nextArrayOfDouble (double[] u, int start, int n)
 Calls nextDouble n times to fill the array u. More...
 
int nextInt (int i, int j)
 Calls nextDouble once to create one integer between i and j. More...
 
void nextArrayOfInt (int i, int j, int[] u, int start, int n)
 Calls nextInt n times to fill the array u. More...
 
String formatState ()
 Use the toString method.
 
String formatStateFull ()
 Use the toStringFull method.
 
RandomStreamBase clone ()
 Clones the current generator and return its copy. More...
 

Static Public Member Functions

static void setPackageSeed (byte seed[])
 Sets the initial seed for the class RandRijndael to the 16 bytes of the vector seed[0..15]. More...
 

Protected Member Functions

double nextValue ()
 
- Protected Member Functions inherited from RandomStreamBase
abstract double nextValue ()
 This method should return the next random number (between 0 and 1) from the current stream. More...
 

Static Package Functions

 [static initializer]
 

Additional Inherited Members

- Protected Attributes inherited from RandomStreamBase
String name = null
 
boolean prec53 = false
 
boolean anti = false
 
- Static Protected Attributes inherited from RandomStreamBase
static double invtwo24 = 5.9604644775390625e-8
 

Detailed Description

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 \(2^{130}\) and jumping ahead is easy. The values of \(V\), \(W\) and \(Z\) are \(2^{40}\), \(2^{42}\) and \(2^{82}\), 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 http://www.esat.kuleuven.ac.be/~rijmen/rijndael/.

Constructor & Destructor Documentation

◆ RandRijndael()

RandRijndael ( String  name)

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

Parameters
namename of the stream

Member Function Documentation

◆ clone()

RandRijndael clone ( )

Clones the current generator and return its copy.

Returns
A deep copy of the current generator

Implements CloneableRandomStream.

◆ getState()

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

◆ setPackageSeed()

static void setPackageSeed ( byte  seed[])
static

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
seedarray of 16 elements representing the seed

◆ setSeed()

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
seedarray of 16 elements representing the seed

◆ toString()

String toString ( )

Returns a string containing the current state of this stream.

Returns
the state of the generator formated as a string

Implements RandomStream.


The documentation for this class was generated from the following file: