rand(3C)


rand, rand_r, srand -- simple random-number generator

Synopsis

   #include <stdlib.h>
   

int rand(void);

void srand(unsigned int seed);

int rand_r(unsigned int *seed);

Description

rand uses a multiplicative congruent random-number generator with period 2[32] that returns successive pseudo-random numbers in the range from 0 to RAND_MAX (defined in stdlib.h).

rand_r computes a sequence of pseudo-random integers in the range 0 to RAND_MAX. If rand_r is called with the same initial value for seed and the value of seed is unchanged between successive returns and calls to rand_r, then the same sequence of random numbers are generated.

The function srand uses the argument seed as a seed for a new sequence of pseudo-random numbers to be returned by subsequent calls to the function rand. If the function srand is then called with the same seed value, the sequence of pseudo-random numbers will be repeated. If the function rand is called before any calls to srand have been made, the same sequence will be generated as when srand is first called with a seed value of 1.

References

drand48(3C)

Notices

The spectral properties of rand and rand_r are limited. drand48(3C) provides a much better, though more elaborate, random-number generator.

Each thread that accesses one of the functions drand48, lrand48, mrand48, srand48, seed48, or lcong48 should be coded as per the following example:

   mutex_lock(I_am_using_drand48);
   value = FUNCTION();
   mutex_unlock(I_am_using_drand48);

where FUNCTION is one of those listed. The same mutex must be used for all six functions.


© 2004 The SCO Group, Inc. All rights reserved.
UnixWare 7 Release 7.1.4 - 25 April 2004