c语言随机函数时间种子,c语言时间函数随机数
C语言问题,怎样利用系统时间作为随机数的种子?
C语言中,设置随机数种子需要包含头文件stdlib.h,利用系统时间需要包含头文件time.h。
成都创新互联自2013年起,是专业互联网技术服务公司,拥有项目网站制作、网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元芷江做网站,已为上家服务,为芷江各地企业和个人服务,联系电话:18982081108
设置随机数种子的函数原型为:void srand(unsigned int seed);
利用系统时间作为随机数的种子代码如下:
#include stdlib.h
#include time.h
int main(){
srand((unsigned)time(NULL)); // 利用系统时间作为随机数的种子
return 0;
}
C语言中产生随机数利用到时间种子,什么原理?谢谢啦。
在C语言中取随机数所需要的函数是:
int rand(void);
void srand (unsigned int n);
rand()函数和srand()函数被声明在头文件stdlib.h中,所以要使用这两个函数必须包含该头文件:
#include stdlib.h
rand()函数返回0到RAND_MAX之间的伪随机数(pseudorandom)。RAND_MAX常量被定义在stdlib.h头文件中。其值等于32767,或者更大。
srand()函数使用自变量n作为种子,用来初始化随机数产生器。只要把相同的种子传入srand(),然后调用rand()时,就会产生相同的随机数序列。因此,我们可以把时间作为srand()函数的种子,就可以避免重复的发生。如果,调用rand()之前没有先调用srand(),就和事先调用srand(1)所产生的结果一样。
c语言的随机函数怎样用?、
#include stdlib.h
#include time.h
int main( )
{
int a[100]; /* 存放随机数的数组 */
time_t t1; /* 用于存放时间 */
time(t1); /* 取得当前系统时间 */
srand(t1); /* 设置随机数种子 */
for (i = 0; i 100; i ++) /* 循环生成10个随机数,放到数组a中 */
a[i] = 10 + rand( ) % 90;
/* 数值范围在10到99间,需要不同范围的数据请自行更改 */
...
}
c语言中语句srand(time(NULL))什么意思。
c语言中 srand(time(NULL)); 的意思是:使用当前时间进行随机数发生器的初始化。
time_t time(time_t *t); 是C标准库函数,如果t是空指针(NULL),直接返回当前时间。如果t不是空指针,返回当前时间的同时,将返回值赋予t指向的内存空间。time() 是指返回自 Unix 纪元起的当前时间的秒数的函数,主要用来获取当前的系统时间,返回的结果是一个time_t类型。
srand函数是随机数发生器的初始化函数。原型:void srand(unsigned int seed); srand和rand()配合使用产生伪随机数序列。
扩展资料:
srand函数的相关信息:
1、语法:void srand (unsigned seed);
2、参数说明:unsigned seed:随机数产生器的初始值(种子值)。
3、功能说明:srand设置产生一系列伪随机数发生器的起始点,要想把发生器重新初始化,可用1作seed值。任何共它的值都把发生器匿成一个随机的起始点。rand检索生成的伪随机数。在任何调用srand之前调用rand与以1作为seed调用srand产生相同的序列。
此函数可以设定rand函数所用的随机数产生演算法的种子值。任何大于一的种子值都会将rand随机数所产生的虚拟随机数序列重新设定一个起始点。
4、包含文件:stdlib. h
5、返回值:无
参考资料来源:百度百科-time()
参考资料来源:百度百科-srand
srand(time(0));//设置时间种子是什么意思(是c语言中的)
计算机产生的随机数并不是真正随机的,所以叫
伪随机数。
当“种子”固定时,它产生的随机数序列是不变的,例如产生10个数,这10个数大小是变化的,但只要用这个种子,每次产生的这10个数序列,是一模一样的。
用
srand(time(0));
设种子,就会因时间变化,得到不同的种子,那么随机数序列就会变化。
time(0)
是当前时间,(精度可能是毫秒)。只要两次跑程序启动时间差别
超过1毫秒,两个序列就不同了(随机)。如果,时间差别不到1毫秒,两个序列就没变化。
--------
错误的程序:
for
(i=0;i5;i++){
srand(time(0));
//
5次的种子若不变
printf("%d
",rand());
//
依次取
5个序列的
第一个数
}
5个数不变化。
-------------------
正确的程序:
srand(time(0));
//
设1次种子
for
(i=0;i5;i++){
printf("%d
",rand());
//依次取1个序列的第1到第5个随机数
}
5个数变化
文章名称:c语言随机函数时间种子,c语言时间函数随机数
网页路径:http://myzitong.com/article/hsgcde.html