C语言生成随机数技巧:srand、rand与time函数的正确使用方法详解

1.直接使用rand不能得到随机数。 rand 会生成一个 0 到 RAND_MAX 之间的整数,是 RAND_MAX 的宏。
例子:
#include
//#include
int main()
{
int random=0;
random=rand();
printf("random=%d\n",random);
return 0;
}
你会发现运行结果是一个固定值。那么这样解决,rand是一颗种子,srand需要播种。
ps:实际上可能会用到stdlib.h头文件,但是我用的编译器通过了。这很奇怪。我正在挖一个洞。
2.加入srand。
例子:
#include
#include
int main()
{
int random=0;
srand(1);
random=rand();
printf("random=%d\n",random);
return 0;
}
你会发现结果还是没有改变。就像上面的例子一样,尝试改变srand(2),你会发现结果发生了变化。但是,如果你反复运行,你会发现结果仍然会重复。我发现,当srand没有设置时,默认是srand(1)的状态。
srand在播种的时候,播种的内容会是固定的,当rand取值的时候,也会取一个固定的值。
然后改成这样?
对了,通过修改srand(unsigned int Seed);中seed的值,是不是得到这个值比较合适呢?
答案是与时间联系起来。
3.添加time.h的时间函数,time()精确到秒。
例子:
#include
#include
#include
int main()
{
int random=0;
srand((unsigned) time(NULL));
random=rand();
printf("random=%d\n",random);
return 0;
}