本文目录一览:
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; i < 5; i++) {
srand(time(0)); // 5次的种子若不变
printf("%d\n", rand()); // 依次取5个序列的第一个数
}
5个数不变化。
正确的程序:
srand(time(0)); // 设1次种子
for (i=0; i < 5; i++) {
printf("%d\n", 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)
所产生的结果一样。