Visible to Intel only — GUID: GUID-79E0C1D5-5B71-46C5-852B-13EFD61DBCDD
Visible to Intel only — GUID: GUID-79E0C1D5-5B71-46C5-852B-13EFD61DBCDD
MT19937
This is a Mersenne Twister pseudorandom number generator:
,
,
,
,
,
,
.
Matrix A (32x32) has the following format:
,
where the 32-bit vector a = a31 ... a0 has the value a = 0x9908B0DF.
Mersenne Twister pseudorandom number generator MT19937 is a modification of twisted generalized feedback shift register generator [Matsum92], [Matsum94]. MT19937 has the period length of 219937-1 and is 623-dimensionally equidistributed with up to 32-bit accuracy. These properties make the generator applicable for simulations in various fields of science and engineering. The initialization procedure is essentially the same as described in [MT2002]. The state of the generator is represented by 624 32-bit unsigned integer numbers.
Real Implementation (Single and Double Precision)
The output vector is the sequence of the floating-point values u0, u1, ...
Integer Implementation
The output vector of 32-bit integers y0, y1, ...
Stream Initialization by Function vslNewStream
MT19937 generates the stream and initializes it specifying the input 32-bit unsigned integer parameter seed. The stream state, that is, the array of 624 32-bit integers x0, ..., x623, is initialized by the procedure described in [MT2002] and based on the seed value.
Stream Initialization of Function vslNewStreamEx
MT19937 generates the stream and initializes it specifying the array the array params[] of n 32-bit integers:
If n ≥ 1, perform initialization as described in [MT2002] using array params[]on input.
If n = 0, assume params[0] = 1, n = 1 and perform initialization as described in the previous item.
Subsequences Selection Methods
vslSkipAheadStream |
Supported |
vslSkipAheadStreamEx |
Not supported |
vslLeapfrogStream |
Not supported |
Skip-ahead method supported by MT19937 is based on algorithms described in [Haram08].
Generator Period
Empirical Testing Results Summary
Test Name | vsRngUniform |
vdRngUniform |
viRngUniform |
viRngUniformBits |
---|---|---|---|---|
3D Spheres Test | OK (0% errors) | OK (0% errors) | Not applicable | OK (0% errors) |
Birthday Spacing Test | Not applicable | Not applicable | Not applicable | OK (10% errors) |
Bitstream Test | Not applicable | Not applicable | Not applicable | OK (10% errors) |
Rank of 31x31 Binary Matrices Test | Not applicable | Not applicable | Not applicable | OK (10% errors) |
Rank of 32x32 Binary Matrices Test | Not applicable | Not applicable | Not applicable | OK (0% errors) |
Rank of 6x8 Binary Matrices Test | Not applicable | Not applicable | Not applicable | OK (0% errors) |
Counts-the-1’s Test (stream of bits) | Not applicable | Not applicable | Not applicable | OK (20% errors) |
Counts-the-1’s Test (stream of specific bytes) | Not applicable | Not applicable | Not applicable | OK (0% errors) |
Craps Test | OK (30% errors) | OK (30% errors) | OK (30% errors) | OK (30% errors) |
Parking Lot Test | OK (0% errors) | OK (0% errors) | Not applicable | OK (0% errors) |
2D Self-Avoiding Random Walk Test | OK (0% errors) | OK (10% errors) | Not applicable | OK (10% errors) |
The tabulated data is obtained using the one-level (threshold) testing technique. The OK result indicates FAIL < 50%. The run fails when p-value falls outside the interval [0.05, 0.95].
The stream tested is generated by calling the function vslNewStream with seed=7,777,777.