MCG31m1
This is a 31-bit multiplicative congruential generator:

MCG31m1 belongs to linear congruential generators with the period length of approximately 2
31
. Such generators are still used as default random number generators in various software systems, mainly due to the simplicity of the portable versions implementation, speed and compatibility with the earlier systems versions. However, their period length does not meet the requirements for modern basic generators. Still, the MCG31m1 generator possesses good statistic properties and you may successfully use it to generate random numbers of different distributions for small samplings.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
x
0
, x
1
, ...Stream Initialization by Function
vslNewStream
MCG31m1 generates the stream and initializes it specifying the input 32-bit parameter seed :
- Assume x0= seed mod 0x7FFFFFFF
- Ifx0= 0, assumex0= 1.
Stream Initialization by Function
vslNewStreamEx
MCG31m1 generates the stream and initializes it specifying the array
params[]
of n
32-bit integers:- Ifn= 0, assumex0= 1
- Otherwise, assume x0= params[0] mod 0x7FFFFFFFIfx0= 0, assumex0= 1.
Subsequences Selection Methods
vslSkipAheadStream | Supported |
vslSkipAheadStreamEx | Not supported |
vslLeapfrogStream | Supported |
Generator Period

Lattice Structure
Empirical Testing Results Summary
Test Name | vsRngUniform | vdRngUniform | viRngUniform | viRngUniformBits |
---|---|---|---|---|
3D Spheres Test | OK (10% errors) | OK (10% errors) | Not applicable | OK (10% 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 (10% errors) |
Rank of 32x32 Binary Matrices Test | Not applicable | Not applicable | Not applicable | Not applicable |
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 (20% errors) | OK (20% errors) | OK (20% errors) | OK (20% errors) |
Parking Lot Test | OK (10% errors) | OK (10% errors) | Not applicable | OK (10% errors) |
2D Self-Avoiding Random Walk Test | OK (20% errors) | OK (20% errors) | Not applicable | OK (20% 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.