代码里的srand(time(0))是什么意思? 10
s[i] = double(rand())/RAND_MAX * 100;
又是什么意思?哪位大神详解一下嘛? 展开
代码里的srand(time(0))的意思是:用当前时间来设定rand函数所用的随机数产生演算法的种子值。
其中,time(time_t *t); 是C标准库函数,如果t是空指针,直接返回当前时间。如果t不是空指针,返回当前时间的同时,将返回值赋予t指向的内存空间。
srand (unsigned seed)函数中参数 unsigned seed 表示随机数产生器的初始值(种子值)。srand设置产生一系列伪随机数发生器的起始点,要想把发生器重新初始化,可用1作seed值。任何共它的值都把发生器匿成一个随机的起始点。rand检索生成的伪随机数。
扩展资料:
随机数生成的相关说明:
1、(double)rand() / RAND_MAX,表示生成一个 0~1.0 之间的随机浮点数:
RAND_MAX指的是 C 语言标准库 <stdlib.h> 中定义的一个宏,是 <stdlib.h> 中伪随机数生成函数 rand 所能返回的最大数值。rand 返回 0~RAND_MAX 之间的随机数。(double)rand() / RAND_MAX得到一个 0~1.0 之间的随机浮点数。
2、srand函数与rand函数的关系:
在任何调用srand之前调用rand与以1作为seed调用srand产生相同的序列。此函数可以设定rand函数所用的随机数产生演算法的种子值。任何大于一的种子值都会将rand随机数所产生的虚拟随机数序列重新设定一个起始点。
参考资料来源:百度百科-time()
参考资料来源:百度百科-srand
参考资料来源:百度百科-RAND_MAX
2024-09-04 广告
double(rand())/RAND_MAX * 100;这个一句是这样的:rand()函数产生随机数是0~32767之间的整数,将它用double强制为double型后除以RAND_MAX(它是C定义的常数32767),这样就得到了0~1之间的随机数,再乘以100就获得了10~100间的double型随机数……
希望对你有帮助。
Srand是种下随机种子数,你每回种下的种子不一样,用Rand得到的随机数就不一样。为了每回种下一个不一样的种子,所以就选用Time(0),Time(0)是得到当前时时间值(因为每时每刻时间是不一样的了)。
time(0)函数返回某一特定时间的小数值。
这条语句的意思就是初始化随机数种子,time函数是为了提高随机的质量(也就是减少重复)而使用的。