The random number generator supplied as the intrinsic subroutine
RANDOM_NUMBER is the “Mersenne Twister”.
Note that this generator has a large state (630 32-bit integers) and an
extremely long period
and therefore it is
strongly recommended that the
RANDOM_SEED routine only be used with
PUT argument that is the
value returned by a previous call with
GET; i.e., only to repeat a
This is because if a user-specified seed has low entropy (likely since there
are 630 values to be supplied), it is highly likely to set the generator to an
apparently-low-entropy part of the sequence.
If you do want to provide your own seed (and thus entropy), you should store your values in the initial elements of the seed array and set all the remaining elements to zero — trailing zero elements will be ignored and not used to initialise the generator. Note that the seed is a random bitstream, and is therefore expected to have approximately half of its bits nonzero (thus providing many small integer values will likely result in a low-entropy part of the Mersenne Twister sequence being reached).