#include <stdlib.h>

int rand(void);

int rand_r(unsigned *seed);

void srand(unsigned seed);


Partially implemented


IEEE Std 1003.1-2017


The rand() function shall compute a sequence of pseudo-random integers in the range [0, RAND_MA]  with a period of at least 232.

The rand() function need not be thread-safe. The rand_r() function shall compute a sequence of pseudo-random integers in the range [0, RAND_MA]. (The value of the RAND_MA macro shall be at least 32767.) If rand_r() is called with the same initial value for the object pointed to by seed and that object is not modified between successive returns and calls to rand_r(), the same sequence shall be generated. The srand() function uses the argument as a seed for a new sequence of pseudo-random numbers to be returned by subsequent calls to rand(). If srand() is then called with the same seed value, the sequence of pseudo-random numbers shall be repeated. If rand() is called before any calls to srand() are made, the same sequence shall be generated as when srand() is first called with a seed value of 1. The implementation shall behave as if no function defined in this volume of POSIX.1-2017 calls rand() or srand().

Return value

The rand() function shall return the next pseudo-random number in the sequence. The rand_r() function shall return a pseudo-random integer. The srand() function shall not return a value.


No errors are defined.



Known bugs


See Also

  1. Standard library functions
  2. Table of Contents