重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
srand 是产生伪随机数的函数,只要给定一个种子seed就会产生一组随机数。
10年积累的做网站、网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有泉港免费网站建设让你可以放心的选择与我们合作。
srand函数是初始化随机数生成函数。
原型:void函数srand(无符号种子);
用法:它需要提供一个种子,种子将对应一个随机数,如果您使用兰特背后相同的种子()函数将显示为一个随机数。如:函数srand(1);直接用于初始化一个种子。然而,为了防止随机数的重复每次,经常用于初始化系统时间的使用时间,以获取系统时间函数,它返回一个值从00:00:00 GMT,1970年1月1日的秒到现在数,然后time_t的数据类型转换(无符号)类型,然后通过srand函数,即:函数srand((无符号)时间(&T));还有一个常见的用法,time_t类型吨需要定义变量,即:函数srand((无符号)时间(NULL));直接传递一个空指针,因为你往往不需要通过获得的t数据的程序参数。
例如:#包括中
#包括中
#包括 / *使用时间的功能,所以必须有头文件* /
#定义最大10
国际主要(无效)
{
整型数[MAX] = {0};
INT I;
函数srand((无符号)时间(NULL)); / *播种子* /
就(i = 0我“最大,我+ +)
{
数量由[i] = RAND()%100; / *生成在100 * /
printf的一个随机整数(“%d个”,数量由[i]);
的printf(“\ n”);
返回0;
}
在C语言中获取随机数的函数是rand();
一个合格的随机数值必须由获取到的值足够散列,以及值不可预知的特性,但如果不做任何处理直接调用rand(),那么得到的值是固定的。下面是一个例子:
#include stdio.h
#include stdlib.h
int main()
{
for(i = 0; i 10; i ++)
printf("%d\n", rand());//获取10次随机数并打印。
return 0;
}
运行这个程序,看起来没什么问题,因为获取到的10个数字都是散列的,很有随机数的感觉。但重复运行这个程序就会发现,每次运行得到的十个数都是同样的,这个并不符合不可预知的特性。
所以C语言中的随机数函数rand()被称为伪随机数。
通过srand函数,可以让这个伪随机数更“真”一些,它的原理是设置一个随机数种子,然后后续的随机数依赖于种子值。
#include stdio.h
#include stdlib.h
int main()
{
for(i = 0; i 100000; i += 10000)
{
srand(i);
printf("%d\n", rand());//获取10次随机数并打印。
}
return 0;
}
反复运行这个程序,会发现,相同的随机数种子获取到的随机数值同样是相同的。这样这个随机数种子值又不能是固定值了,于是需要想办法让这个种子值有变化。
让这个值有变化的方法有很多种,最常用的就是通过时间函数time()。这个函数是获取当前时间值的,单位是毫秒。通常的调用方式是time(NULL);
用这个值来做随机数种子可以让每次调用得到的种子值不同,因为要达到完全相同的效果,必须要在毫秒级的相同时间下同时执行,这个概率太低了。
于是time(NULL)就成了最常用的随机数种子。
以上就是srand(time(NULL)); 经常放在随机数发生前作为随机数种子的原因了。