这是代码:
#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
C 标准实际上规定了其他答案中记录的行为:
\n\n\nISO/IEC 9899:2011 \xc2\xa77.22.2.2
\nsrand功能\xc2\xb62 [...] 如果
\nrand在进行任何调用之前调用srand,则应生成与srand首次使用种子值 1 调用时相同的序列。