本文目录一览:
- 1、C语言如何设置固定时间种子
- 2、srand(time(0));//设置时间种子是什么意思(是c语言中的)
- 3、C语言问题,怎样利用系统时间作为随机数的种子?
- 4、C语言中产生随机数利用到时间种子,什么原理?谢谢啦。
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个数变化
srand(time(0));//设置时间种子是什么意思(是c语言中的)
因为系统的时间每次都不同,这样可以避免每次产生的随机数都相同
C语言问题,怎样利用系统时间作为随机数的种子?
C语言中,设置随机数种子需要包含头文件stdlib.h,利用系统时间需要包含头文件time.h。
设置随机数种子的函数原型为: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)所产生的结果一样。