Extends RandomStreamBase using a composite linear feedback shift register (LFSR) (or Tausworthe) RNG as defined in [144],. More...
Public Member Functions | |
| LFSR113 () | |
| Constructs a new stream. | |
| LFSR113 (String name) | |
| Constructs a new stream with the identifier name. | |
| void | setSeed (int[] seed) |
| This method is discouraged for normal use. | |
| int[] | getState () |
| Returns the current state of the stream, represented as an array of four integers. | |
| LFSR113 | 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 (int[] seed) |
| Sets the initial seed for the class LFSR113 to the four integers of the vector seed[0..3]. | |
Protected Member Functions | |
| double | nextValue () |
| This method should return the next random number (between 0 and 1) from the current stream. | |
Extends RandomStreamBase using a composite linear feedback shift register (LFSR) (or Tausworthe) RNG as defined in [144],.
[220] . This generator is the LFSR113 proposed by [146] . It has four 32-bit components combined by a bitwise xor. Its period length is \(\rho\approx2^{113}\). The values of \(V\), \(W\) and \(Z\) are \(2^{35}\), \(2^{55}\) and \(2^{90}\) respectively (see RandomStream for their definition). The seed of the RNG, and the state of a stream at any given step, are four-dimensional vectors of 32-bit integers. The default initial seed of the RNG is [1] (987654321, 987654321, 987654321, 987654321). The nextValue method returns numbers with 32 bits of precision.
Definition at line 47 of file LFSR113.java.
| umontreal.ssj.rng.LFSR113.LFSR113 | ( | ) |
Constructs a new stream.
Definition at line 69 of file LFSR113.java.
| umontreal.ssj.rng.LFSR113.LFSR113 | ( | String | name | ) |
Constructs a new stream with the identifier name.
| name | name of the stream |
Definition at line 122 of file LFSR113.java.
| LFSR113 umontreal.ssj.rng.LFSR113.clone | ( | ) |
Clones the current generator and return its copy.
Reimplemented from umontreal.ssj.rng.RandomStreamBase.
Definition at line 186 of file LFSR113.java.
| int[] umontreal.ssj.rng.LFSR113.getState | ( | ) |
Returns the current state of the stream, represented as an array of four integers.
Definition at line 177 of file LFSR113.java.
| int umontreal.ssj.rng.LFSR113.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.
| i | the smallest possible returned integer |
| j | the largest possible returned integer |
Reimplemented from umontreal.ssj.rng.RandomStreamBase.
Definition at line 310 of file LFSR113.java.
|
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.
Reimplemented from umontreal.ssj.rng.RandomStreamBase.
Definition at line 305 of file LFSR113.java.
| void umontreal.ssj.rng.LFSR113.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 230 of file LFSR113.java.
| void umontreal.ssj.rng.LFSR113.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 198 of file LFSR113.java.
| void umontreal.ssj.rng.LFSR113.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 204 of file LFSR113.java.
|
static |
Sets the initial seed for the class LFSR113 to the four integers of the vector seed[0..3].
This will be the initial state of the next created stream. The default seed for the first stream is [2] (987654321, 987654321, 987654321, 987654321). The first, second, third and fourth integers of seed must be either negative, or greater than or equal to 2, 8, 16 and 128 respectively.
| seed | array of 4 elements representing the seed |
Definition at line 138 of file LFSR113.java.
| void umontreal.ssj.rng.LFSR113.setSeed | ( | int[] | seed | ) |
This method is discouraged for normal use.
Initializes the stream at the beginning of a stream with the initial seed seed[0..3]. 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.
| seed | array of 4 elements representing the seed |
Definition at line 164 of file LFSR113.java.
| String umontreal.ssj.rng.LFSR113.toString | ( | ) |
Returns a string containing the current state of this stream.
Reimplemented from umontreal.ssj.rng.RandomStreamBase.
Definition at line 279 of file LFSR113.java.