作业帮 > 综合 > 作业

c语言中 a[i][j]=rand()/1000+1;是什么意思;随机发生函数rand()是怎么随机发生的,有什么范围吗

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/10 11:24:47
c语言中 a[i][j]=rand()/1000+1;是什么意思;随机发生函数rand()是怎么随机发生的,有什么范围吗?
MSDN中关于rand的描述"The rand function returns a pseudorandom integer in the range 0 to RAND_MAX (32767). Use the srand function to seed the pseudorandom-number generator before calling rand."
rand()产生的伪随机数的范围是0到32767,一般想要产生比如[5,125]的随机数,可以这么写:
int x = rand()%120 + 5;
其中120是区间长度.
rand()产生的随机数是“伪随机数”,就是有可能在你的机器上运行,每次运行程序产生的随机数序列都是一样的,因此需要使用srand()解决这个问题:
#include
srand(time(NULL)); //这句放在任何的rand()之前,且只需使用一次
再问: time(NULL)的作用是什么,srand()函数有什么用,rand()产生的随机数每次都是一样的吗 为什么会这样呢 那样还叫随机产生吗
再答: 这个跟计算机内部实现有关,所以rand()是“伪随机数”产生函数,注意,是“伪随机数”而不是“随机数”,如果每次srand()给的参数值相同,那么rand()产生的序列就是相同的。time(NULL)返回的是从某年的1月1日0时0分0秒开始(这个年份记不清了)到系统当前时间所经过的秒数,所以如果不是同一秒钟以内多次运行程序的话,time(NULL)的返回值一定是不同的,用这样的方式来产生相对比较随机的序列。