SSJ
V. 2.6.

umontreal.iro.lecuyer.rng
Class LFSR258

java.lang.Object
  extended by umontreal.iro.lecuyer.rng.RandomStreamBase
      extended by umontreal.iro.lecuyer.rng.LFSR258
All Implemented Interfaces:
Serializable, Cloneable, CloneableRandomStream, RandomStream

public class LFSR258
extends RandomStreamBase

Extends RandomStreamBase using a 64-bit composite linear feedback shift register (LFSR) (or Tausworthe) RNG as defined in. This generator is the LFSR258 proposed in. It has five components combined by a bitwise xor. Its period length is approximatively 2^258 . The values of V, W and Z are 2100, 2100 and 2200 respectively (see RandomStream for their definition). The seed of the RNG, and the state of a stream at any given step, are five-dimensional vectors of 64-bit integers. The default initial seed 1 of the RNG is (123456789123456789, 123456789123456789, 123456789123456789, 123456789123456789, 123456789123456789). The nextValue method returns numbers with 53 bits of precision. This generator is fast for 64-bit machines.

See Also:
Serialized Form

Constructor Summary
LFSR258()
          Constructs a new stream.
LFSR258(String name)
          Constructs a new stream with the identifier name.
 
Method Summary
 LFSR258 clone()
          Clones the current generator and return its copy.
 long[] getState()
          Returns the current state of the stream, represented as an array of five integers.
 int nextInt(int i, int j)
          Calls nextDouble once to create one integer between i and j.
 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(long[] seed)
          Sets the initial seed for the class LFSR258 to the five integers of array seed[0..4].
 void setSeed(long[] 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
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

LFSR258

public LFSR258()
Constructs a new stream.


LFSR258

public LFSR258(String name)
Constructs a new stream with the identifier name.

Parameters:
name - name of the stream
Method Detail

setPackageSeed

public static void setPackageSeed(long[] seed)
Sets the initial seed for the class LFSR258 to the five integers of array seed[0..4]. This will be the initial state of the next created stream. The default seed 2 for the first stream is (123456789123456789, 123456789123456789, 123456789123456789, 123456789123456789, 123456789123456789). The first, second, third, fourth and fifth integers of seed must be either negative, or greater than or equal to 2, 512, 4096, 131072 and 8388608 respectively.

Parameters:
seed - array of 5 elements representing the seed

setSeed

public void setSeed(long[] seed)
This method is discouraged for normal use. Initializes the stream at the beginning of a stream with the initial seed seed[0..4]. The seed must satisfy the same conditions as in setPackageSeed. 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 5 elements representing the seed

getState

public long[] getState()
Returns the current state of the stream, represented as an array of five integers.

Returns:
the current state of the stream

clone

public LFSR258 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

nextInt

public int nextInt(int i,
                   int j)
Description copied from class: RandomStreamBase
Calls nextDouble once to create one integer between i and j. This method always uses the highest order bits of the random number. It should be overridden if a faster implementation exists for the specific generator.

Specified by:
nextInt in interface RandomStream
Overrides:
nextInt in class RandomStreamBase
Parameters:
i - the smallest possible returned integer
j - the largest possible returned integer
Returns:
a random integer between i and j

SSJ
V. 2.6.

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