Next: , Previous: , Up: Stdlib   [Contents][Index]


2.34 random, srandom—pseudo-random numbers

Synopsis

#define _XOPEN_SOURCE 500
#include <stdlib.h>
long int random(void);
void srandom(unsigned int seed);

Description
random returns a different integer each time it is called; each integer is chosen by an algorithm designed to be unpredictable, so that you can use random when you require a random number. The algorithm depends on a static variable called the “random seed”; starting with a given value of the random seed always produces the same sequence of numbers in successive calls to random.

You can set the random seed using srandom; it does nothing beyond storing its argument in the static variable used by rand. You can exploit this to make the pseudo-random sequence less predictable, if you wish, by using some other unpredictable value (often the least significant parts of a time-varying value) as the random seed before beginning a sequence of calls to rand; or, if you wish to ensure (for example, while debugging) that successive runs of your program use the same “random” numbers, you can use srandom to set the same random seed at the outset.


Returns
random returns the next pseudo-random integer in sequence; it is a number between 0 and RAND_MAX (inclusive).

srandom does not return a result.


Notes
random and srandom are unsafe for multi-threaded applications.

_XOPEN_SOURCE may be any value >= 500.


Portability
random is required by XSI. This implementation uses the same algorithm as rand.

random requires no supporting OS subroutines.