public class MRG31k3p extends RandomStreamBase
RandomStreamBase, thus
implementing the RandomStream interface indirectly. The backbone
generator is the combined multiple recursive generator (CMRG) MRG31k3p
proposed by L'Ecuyer and Touzin,
implemented in 32-bit integer arithmetic.
This RNG has a period length of approximately
2185. The values of V, W and Z are 262,
272 and 2134 respectively. (See RandomStream for their
definition.) The seed and the state of a stream at any given step
are six-dimensional vectors of 32-bit integers.
The default initial seed is
(12345, 12345, 12345, 12345, 12345, 12345).
The method nextValue provides 31 bits of precision.
The difference between the RNG of class MRG32k3a and this one is
that this one has all its coefficients of the form
a = ±2q±2r. This permits a faster implementation than for
arbitrary coefficients. On a 32-bit computer, MRG31k3p is about twice
as fast as MRG32k3a.
On the other hand, the latter does a little better in the spectral test
and has been more extensively tested.
| Constructor and Description |
|---|
MRG31k3p()
Constructs a new stream, initialized at its beginning.
|
MRG31k3p(java.lang.String name)
Constructs a new stream with the identifier name
(used when formatting the stream state).
|
| Modifier and Type | Method and Description |
|---|---|
MRG31k3p |
clone()
Clones the current generator and return its copy.
|
int[] |
getState()
Returns the current state Cg of this stream.
|
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(int[] seed)
Sets the initial seed for the class MRG31k3p to the six
integers of the vector seed[0..5].
|
void |
setSeed(int[] seed)
Use of this method is strongly discouraged.
|
java.lang.String |
toString()
Returns a string containing the current state of this stream.
|
formatState, formatStateFull, increasedPrecision, nextArrayOfDouble, nextArrayOfInt, nextDouble, nextIntpublic MRG31k3p()
public MRG31k3p(java.lang.String name)
name - name of the streampublic static void setPackageSeed(int[] seed)
seed - array of 6 elements representing the seedpublic void setSeed(int[] seed)
seed - array of 6 integers representing the new seedpublic void resetStartStream()
RandomStreamresetStartStream in interface RandomStreamresetStartStream in class RandomStreamBasepublic void resetStartSubstream()
RandomStreamresetStartSubstream in interface RandomStreamresetStartSubstream in class RandomStreamBasepublic void resetNextSubstream()
RandomStreamresetNextSubstream in interface RandomStreamresetNextSubstream in class RandomStreamBasepublic int[] getState()
public MRG31k3p clone()
clone in interface CloneableRandomStreamclone in class RandomStreamBasepublic java.lang.String toString()
RandomStreamtoString in interface RandomStreamtoString in class RandomStreamBaseTo submit a bug or ask questions, send an e-mail to Pierre L'Ecuyer.