srand

From cppreference.com
Defined in header <stdlib.h>
void srand ( unsigned seed ) ;

Seeds the pseudo-random number generator used by rand() with the value seed .

If rand() is used before any calls to srand() , rand() behaves as if it was seeded with srand ( 1 ) .

Each time rand() is seeded with the same seed , it must produce the same sequence of values.

srand() is not guaranteed to be thread-safe.

Parameters

seed - the seed value

Return value

(none)

Notes

Generally speaking, the pseudo-random number generator should only be seeded once, before any calls to rand() , and the start of the program. It should not be repeatedly seeded, or reseeded every time you wish to generate a new batch of pseudo-random numbers.

Standard practice is to use the result of a call to time ( 0 ) as the seed. However, time() returns a time_t value, and time_t is not guaranteed to be an integral type. In practice, though, every major implementation defines time_t to be an integral type, and this is also what POSIX requires.

Example

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main(void)
{
    srand(time(NULL)); //use current time as seed for random generator
    int random_variable = rand();
    printf("Random value on [0,%d]: %d\n", RAND_MAX, random_variable);
}

Possible output:

Random value on [0 2147483647]: 1373858591

References

  • C17 standard (ISO/IEC 9899:2018):
  • 7.22.2.2 The srand function (p: 252-253)
  • C11 standard (ISO/IEC 9899:2011):
  • 7.22.2.2 The srand function (p: 346-347)
  • C99 standard (ISO/IEC 9899:1999):
  • 7.20.2.2 The srand function (p: 312-313)
  • C89/C90 standard (ISO/IEC 9899:1990):
  • 4.10.2.2 The srand function

See also

generates a pseudo-random number
(function)
maximum possible value generated by rand ( )
(macro constant)