如果我没有指定srand(),rand()使用什么种子?

mil*_*o64 6 c random srand

这是代码:

#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;
}
Run Code Online (Sandbox Code Playgroud)

我一直在尝试随机数,但有一天,我忘了srand()输入,但rand()功能仍然可以随机一个数字(相同的序列).

问题是,如果我没有指定它,它会使用什么种子?

小智 6

如果没有调用srand,则rand就像调用了srand(1)一样.

http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.13.html#rand


Jon*_*ler 5

C 标准实际上规定了其他答案中记录的行为:

\n
\n

ISO/IEC 9899:2011 \xc2\xa77.22.2.2srand功能

\n

\xc2\xb62 [...] 如果rand在进行任何调用之前调用srand,则应生成与srand首次使用种子值 1 调用时相同的序列。

\n
\n