CALL RANUNI Routine

Returns a random variate from a uniform distribution.

Category: Random Number

Syntax

CALL RANUNI(seed,x);

Required Arguments

seed

is the seed value. A new value for seed is returned each time CALL RANUNI is executed.

Range seed < 231 - 1
Tip If seed ≤ 0, the time of day is used to initialize the seed stream.
See Seed Values and Comparison of Seed Values in Random-Number Functions and CALL Routines for more information about seed values

x

is a numeric variable. A new value for the random variate x is returned each time CALL RANUNI is executed.

Details

The CALL RANUNI routine updates seed and returns a variate x that is generated from the uniform distribution on the interval (0,1), using a prime modulus multiplicative generator with modulus 231–1 and multiplier 397204094 (Fishman and Moore 1982) (See References. ).
By adjusting the seeds, you can force streams of variates to agree or disagree for some or all of the observations in the same, or in subsequent, DATA steps.
For a discussion and example of an effective use of the random number CALL routines, see Starting, Stopping, and Restarting a Stream.

Comparisons

The CALL RANUNI routine gives greater control of the seed and random number streams than does the RANUNI function.

Example: Using the CALL RANUNI Routine

This example uses the CALL RANUNI routine:
data u1(keep=x);
   seed = 104;
   do i = 1 to 5;
      call ranuni(seed, x);
      output;
   end;
   call symputx('seed', seed);
run;
data u2(keep=x);
   seed = &seed;
   do i = 1 to 5;
      call ranuni(seed, x);
      output;
   end;
run;
data all;
   set u1 u2;
   z = ranuni(104);
run;
proc print label;
   label x = 'Separate Streams' z = 'Single Stream';
run;
Output from the CALL RANUNI Routine
Output from the CALL RANUNI Routine

See Also