SFMT19937
This is a SIMD-oriented Fast Mersenne Twister pseudorandom number generator:

where
w
0
, w
M
, w
n-2
, ... are 128-bit integers, and the wA
, wB
, wC
, wD
operations are defined as follows:
w
by a
followed by exclusive-or operation 
w
followed by and-operation with quadruple of 32-bit masks mask
,mask
=(0xBFFFFFF6 0xBFFAFFFF 0xDDFECB7F 0xDFFFFFFEF)
w

w
Integer output:
r
4n+k
= w
n
(k)
, where w
n
(k)
is the k
-th 32-bit integer in quadruple w
n
, k
= 0, 1, 2, 3u
n
= (int)r
n
/232 + ½
Real Implementation (Single and Double Precision)
The output vector is the sequence of the floating-point values
u
0
, u
1
, ... .Integer Implementation
The output vector of 32-bit integers
r
0
, r
1
...Stream Initialization by Function
vslNewStream
SFMT19937 generates the stream and initializes it specifying the input 32-bit unsigned integer parameter seed. The stream state, that is, the array of 156 128-bit integers (624 32-bit integers
x
0
, ..., x
623
), is initialized by the procedure described in [Saito08] and based on the seed value.Stream Initialization of Function
vslNewStreamEx
SFMT19937 generates the stream and initializes it specifying the array
params[]
of n
32-bit unsigned integers:- Ifn= 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 SFMT19937 is based on algorithms described in [Haram08].
Generator Period

Empirical Testing Results Summary
Test Name | vsRngUniform | vdRngUniform | viRngUniform | viRngUniformBits |
---|---|---|---|---|
3D Spheres Test | OK (30% errors) | OK (30% errors) | Not applicable | OK (40% errors) |
Birthday Spacing Test | Not applicable | Not applicable | Not applicable | OK (0% 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 (0% 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 (10% errors) |
Counts-the-1’s Test (stream of specific bytes) | Not applicable | Not applicable | Not applicable | OK (0% errors) |
Craps Test | OK (20% errors) | OK (20% errors) | OK (20% errors) | OK (10% errors) |
Parking Lot Test | OK (30% errors) | OK (30% errors) | Not applicable | OK (0% errors) |
2D Self-Avoiding Random Walk Test | OK (0% errors) | OK (20% 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 functionvslNewStreamwith seed=7,777,777.