我是靠谱客的博主 故意冬天,最近开发中收集的这篇文章主要介绍对time,srand,rand函数的一点看法(以及为什么两次rand函数调取的随机数会相同?),觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
首先看三段代码
代码一:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main()
{
int a = 0, b = 0, c = 0;
srand((unsigned)time(NULL));
a = rand();
/*srand((unsigned)time(NULL));*/
b = rand();
c = rand();
printf("%d %d %dn", a, b,c);
return 0;
}
代码二:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main()
{
int a = 0, b = 0, c = 0, d = 0;
srand((unsigned)time(NULL));
a = rand();
b = rand();
printf("%d %dn", a, b);
srand((unsigned)time(NULL));//比第一段代码增加了一条srand函数
c = rand();
d = rand();
printf("%d %dn", c, d);
return 0;
}
代码三:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main()
{
int a = 0;
for (int i = 0;i < 4;i++)
{
srand((unsigned)time(NULL));
printf(" %d",a = rand());
}
return 0;
}
第一段代码中,main函数中调用一次srand函数和time函数,调用三次rand的函数,生成a,b,c三个不同随机数,没什么问题。
再看第二段代码,运行结果是a,b和c,d结果相同!
第三段代码4个a值结果全部相同!
就可以断定:
time函数对时间的精确是有限的,而且间隔区间大于一次较短程序的运行时间!
rand函数和srand函数是有指针联系的,从srand中选取数据是有固定的路径的
随机数的生成只受time函数的控制
如果想要避免发生不是随机的结果,一个程序只调用一次time函数是最好;或者利用输入函数拉开时间间隔;或者尽可能用更多语句拉开时间;或者还有其他我不知道的函数分割srand随机数据库。
最后
以上就是故意冬天为你收集整理的对time,srand,rand函数的一点看法(以及为什么两次rand函数调取的随机数会相同?)的全部内容,希望文章能够帮你解决对time,srand,rand函数的一点看法(以及为什么两次rand函数调取的随机数会相同?)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复