Here is the code:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int r;
int i;
for (i = 0; i < 100; i++)
{
r = rand() % 100 + 1;
printf("%d\n", r);
}
return 0;
}
I've been trying to random number but one day, I forgot to put srand()
in, but the rand()
function can still random a number (the same sequence).
The question is, what seed does it use if I don't specify it?
If srand is not called, rand acts as if srand(1) has been called.
http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.13.html#rand
The C standard actually stipulates the behaviour documented in the other answers:
ISO/IEC 9899:2011 §7.22.2.2 The srand
function
¶2 [...] If rand
is called before any calls to srand
have been made, the same sequence shall be generated as when srand
is first called with a seed value of 1.
The man
pages state the following:
The srand() function sets its argument as the seed for a new sequence
of pseudo-random integers to be returned by rand(). These sequences
are repeatable by calling srand() with the same seed value.
If no seed value is provided, the rand() function is automatically
seeded with a value of 1.
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.
Ref:
http://pubs.opengroup.org/onlinepubs/009695399/functions/rand.html
The srand() function sets its argument as the seed for a new sequence of pseudo-random integers to be returned by rand(). These sequences are repeatable by calling srand() with the same seed value.
If no seed value is provided, the rand() function is automatically seeded with a value of 1.