If I don't specify srand(), what seed does rand() use?

穿精又带淫゛_ 提交于 2019-11-27 07:49:24

问题


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?


回答1:


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




回答2:


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.




回答3:


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.




回答4:


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




回答5:


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.



来源:https://stackoverflow.com/questions/14251452/if-i-dont-specify-srand-what-seed-does-rand-use

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!