Random Number Generation

The donor selection methods available in PROC SURVEYIMPUTE use random numbers in their selection algorithms. PROC SURVEYIMPUTE uses a uniform random number function to generate streams of pseudorandom numbers from an initial starting point, or seed. You can use the SEED= option to specify the initial seed. You can specify the same SEED= value (along with the same options and the same input data) to reproduce the imputation. If you do not specify the SEED= option, PROC SURVEYIMPUTE uses the time of day from the computer’s clock to obtain the initial seed. For information about specifying the initial seed, see the SEED= option.

PROC SURVEYIMPUTE uses the Mersenne twister random number generator. The Mersenne twister generator (Matsumoto and Nishimura 1998) has a very long period ($2^{19937} - 1$) and good statistical properties. The algorithm is a twisted generalized feedback shift register. This is the same random number generator that PROC SURVEYSELECT uses by default and that the RAND function provides for the uniform distribution. For more information, see SAS Functions and CALL Routines: Reference.