Defined in header <stdlib.h>  

int rand(); 
Returns a pseudorandom integer value between 0
and RAND_MAX
(0 and RAND_MAX
included).
srand()
seeds the pseudorandom number generator used by rand()
. 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 srand()
, it must produce the same sequence of values.
rand()
is not guaranteed to be threadsafe.
(none).
Pseudorandom integer value between 0
and RAND_MAX
, inclusive.
There are no guarantees as to the quality of the random sequence produced. In the past, some implementations of rand()
have had serious shortcomings in the randomness, distribution and period of the sequence produced (in one wellknown example, the loworder bit simply alternated between 1
and 0
between calls). rand()
is not recommended for serious randomnumber generation needs, like cryptography.
POSIX requires that the period of the pseudorandom number generator used by rand
be at least 232
.
POSIX offered a threadsafe version of rand called rand_r, which is obsolete in favor of the drand48 family of functions.
#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); // roll a 6sided die 20 times for (int n=0; n != 20; ++n) { int x = 7; while(x > 6) x = 1 + rand()/((RAND_MAX + 1u)/6); // Note: 1+rand()%6 is biased printf("%d ", x); } }
Possible output:
Random value on [0,2147483647]: 448749574 3 1 3 1 4 2 2 1 3 6 4 4 3 1 6 2 3 2 6 1
seeds pseudorandom number generator (function) 

maximum possible value generated by rand() (macro constant) 
© cppreference.com
Licensed under the Creative Commons AttributionShareAlike Unported License v3.0.
http://en.cppreference.com/w/c/numeric/random/rand