以下是代码:
#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;
}
我一直想尝试随机数,但是有一天,我忘记了srand()
,但rand()
函数仍然可以随机输入一个数字(相同的序列)。
问题是,如果我没有指定它,会使用什么种子?
答案 0 :(得分:6)
如果未调用srand,则rand就像调用srand(1)一样。
http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.13.html#rand
答案 1 :(得分:4)
C标准实际上规定了其他答案中记录的行为:
ISO / IEC 9899:2011§7.22.2.2
srand
功能¶2[...]如果在对
rand
进行任何调用之前调用srand
,则应生成与首次使用种子调用srand
时相同的序列值为1。
答案 2 :(得分:2)
The man
pages state the following:
srand()函数将其参数设置为新序列的种子 rand()返回的伪随机整数。这些序列 通过使用相同的种子值调用srand()可重复。
如果未提供种子值,则自动执行rand()函数 种子值为1。
答案 3 :(得分: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.
<强>价:强>
http://pubs.opengroup.org/onlinepubs/009695399/functions/rand.html
答案 4 :(得分:1)
srand()函数将其参数设置为rand()返回的新的伪随机整数序列的种子。通过使用相同的种子值调用srand(),可以重复这些序列。
如果未提供种子值,则rand()函数将自动播种,值为1.