关于C++的随机数rand的一些小问题

来源:百度知道 编辑:UC知道 时间:2024/06/03 17:42:53
源程序是:

#include<iostream>
#include<ctime>
using namespace std;

void main()
{
int i;
srand((int)time(0));
i=(int)rand()%10;
cout<<i;
}

我想问下,其中的srand((int)time(0))这段代码中,那个time(0)的意思是?time里面应该是越大越好,还是越小越好呢?
刚才查了下资料,time(0)和time(NULL)只有这2种形式,但是那个 "0" 和 "NULL"有什么区别呢???

time(0)得到当前时间,(INT)之后被转换为一个整数。因此时间在不停地变化,这就保证了每次执行到这里时,这里会得到一个不同的数。

这个不同的整数是为了给伪随机数发生器一个“种子”,无所谓大小,只要不同就行。

为什么伪随机数发生器需要种子?
注意到这个“伪”字。因为计算机的逻辑计算都是确定的,实际上没有办法产生真正的随机数,因此,计算机里的随机数都是采用对某个“初始数”进行某种迭代运算而产生的,如每次取其三角函数结果的第N位等,用于得到模拟的随机序列,因此称为伪随机数。那个初始数,也就是“种子”。

可以做一下实验:
1.写一个程序,用一个固定的值来srand(),然后循环取出100个随机数。
2.把这个程序运行N次,看看每次得到的随机数序列是不是一样的?

NULL是一个C语言的宏定义,NULL就等于0.

这个大小倒不是关键.也没关系,那只是用作种子而已,不然你每次生成的的随机数是一样的
在C语言中其实0和NULL的的值是一样的,你可以看看头文件定义.
你得再好好看看书