SSJ API Documentation
Stochastic Simulation in Java
Loading...
Searching...
No Matches
umontreal.ssj.rng.LFSR258 Class Reference

Extends RandomStreamBase using a 64-bit composite linear feedback shift register (LFSR) (or Tausworthe) RNG as defined in [144],. More...

Inheritance diagram for umontreal.ssj.rng.LFSR258:
umontreal.ssj.rng.RandomStreamBase umontreal.ssj.rng.CloneableRandomStream umontreal.ssj.rng.RandomStream

Public Member Functions

 LFSR258 ()
 Constructs a new stream.
 LFSR258 (String name)
 Constructs a new stream with the identifier name.
void setSeed (long seed[])
 This method is discouraged for normal use.
long[] getState ()
 Returns the current state of the stream, represented as an array of five integers.
LFSR258 clone ()
 Clones the current generator and return its copy.
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:
void resetNextSubstream ()
 Reinitializes the stream to the beginning of its next substream:
String toString ()
 Returns a string containing the current state of this stream.
int nextInt (int i, int j)
 Calls nextDouble once to create one integer between i and j.
Public Member Functions inherited from umontreal.ssj.rng.RandomStreamBase
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).
double nextDouble ()
 Returns a uniform random number between 0 and 1 from the stream.
void nextArrayOfDouble (double[] u, int start, int n)
 Calls nextDouble n times to fill the array u.
void nextArrayOfInt (int i, int j, int[] u, int start, int n)
 Calls nextInt n times to fill the array u.
String formatState ()
 Use the toString method.
String formatStateFull ()
 Use the toStringFull method.

Static Public Member Functions

static void setPackageSeed (long seed[])
 Sets the initial seed for the class LFSR258 to the five integers of array seed[0..4].

Protected Member Functions

double nextValue ()
 This method should return the next random number (between 0 and 1) from the current stream.

Detailed Description

Extends RandomStreamBase using a 64-bit composite linear feedback shift register (LFSR) (or Tausworthe) RNG as defined in [144],.

[220] . This generator is the LFSR258 proposed in [146] . It has five components combined by a bitwise xor. Its period length is \(\rho\approx2^{258}\). The values of \(V\), \(W\) and \(Z\) are \(2^{100}\), \(2^{100}\) and \(2^{200}\) 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.

Definition at line 53 of file LFSR258.java.

Constructor & Destructor Documentation

◆ LFSR258() [1/2]

umontreal.ssj.rng.LFSR258.LFSR258 ( )

Constructs a new stream.

Definition at line 77 of file LFSR258.java.

◆ LFSR258() [2/2]

umontreal.ssj.rng.LFSR258.LFSR258 ( String name)

Constructs a new stream with the identifier name.

Parameters
namename of the stream

Definition at line 146 of file LFSR258.java.

Member Function Documentation

◆ clone()

LFSR258 umontreal.ssj.rng.LFSR258.clone ( )

Clones the current generator and return its copy.

Returns
A deep copy of the current generator

Reimplemented from umontreal.ssj.rng.RandomStreamBase.

Definition at line 213 of file LFSR258.java.

◆ getState()

long[] umontreal.ssj.rng.LFSR258.getState ( )

Returns the current state of the stream, represented as an array of five integers.

Returns
the current state of the stream

Definition at line 204 of file LFSR258.java.

◆ nextInt()

int umontreal.ssj.rng.LFSR258.nextInt ( int i,
int j )

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.

Parameters
ithe smallest possible returned integer
jthe largest possible returned integer
Returns
a random integer between i and j

Reimplemented from umontreal.ssj.rng.RandomStreamBase.

Definition at line 330 of file LFSR258.java.

◆ nextValue()

double umontreal.ssj.rng.LFSR258.nextValue ( )
protected

This method should return the next random number (between 0 and 1) from the current stream.

If the stream is set to the high precision mode (increasedPrecision(true) was called), then each call to nextDouble will call nextValue twice, otherwise it will call it only once.

Returns
a number in the interval (0,1)

Reimplemented from umontreal.ssj.rng.RandomStreamBase.

Definition at line 321 of file LFSR258.java.

◆ resetNextSubstream()

void umontreal.ssj.rng.LFSR258.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\).

Reimplemented from umontreal.ssj.rng.RandomStreamBase.

Definition at line 239 of file LFSR258.java.

◆ resetStartStream()

void umontreal.ssj.rng.LFSR258.resetStartStream ( )

Reinitializes the stream to its initial state \(I_g\): \(C_g\) and \(B_g\) are set to \(I_g\).

Reimplemented from umontreal.ssj.rng.RandomStreamBase.

Definition at line 225 of file LFSR258.java.

◆ resetStartSubstream()

void umontreal.ssj.rng.LFSR258.resetStartSubstream ( )

Reinitializes the stream to the beginning of its current substream:

\(C_g\) is set to \(B_g\).

Reimplemented from umontreal.ssj.rng.RandomStreamBase.

Definition at line 231 of file LFSR258.java.

◆ setPackageSeed()

void umontreal.ssj.rng.LFSR258.setPackageSeed ( long seed[])
static

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

Definition at line 164 of file LFSR258.java.

◆ setSeed()

void umontreal.ssj.rng.LFSR258.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
seedarray of 5 elements representing the seed

Definition at line 191 of file LFSR258.java.

◆ toString()

String umontreal.ssj.rng.LFSR258.toString ( )

Returns a string containing the current state of this stream.

Returns
the state of the generator formated as a string

Reimplemented from umontreal.ssj.rng.RandomStreamBase.

Definition at line 298 of file LFSR258.java.


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