我收到了这段代码:
#include <stdio.h>
#include <conio.h>
int rand();
int main()
{
int a = 1;
while (a<=15)
{
printf("%d\n", rand());
a++;
}
return 0;
}
生成随机数的函数在每次执行时生成相同的数字,我该如何解决?
答案 0 :(得分:4)
您需要将rand()
与srand()
一起初始化为:
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
int main()
{
srand(time(NULL));
int a = 1;
while (a<=15)
{
printf("%d\n", rand());
a++;
}
return 0;
}
简而言之,你需要随机喂一些种子才能完成他的工作,但你想在每次运行时给他新的种子,因此使用time(NULL)
。
哦,而且,您不需要在主管之前声明int rand();
,而是将<stdlib.h>
添加到您的包含列表中。
继续学习!
答案 1 :(得分:2)
你必须设置一个种子,所以在你的while循环之前这样做(也不要忘记包括:time.h
):
srand(time(NULL));
答案 2 :(得分:2)
您可以使用
生成不同的随机数#include <stdlib.h> // for rand() and srand()
#include <time.h> // for time()
// other headers
int main()
{
srand(time(NULL));
// rest of your code
}
通过使用srand()
,您可以为随机数生成器播种,以便在程序的不同运行中获得不同的随机数。
并且还要从代码中删除int rand();
,除非您尝试创建自己的rand()
函数
答案 3 :(得分:1)
Seet种子或srand(time(NULL));
如果你随时间设置,请加入<time.h>
库。
我推荐你include <stdlib.h>
- 这是用于srand或rand函数。