c++中rand()每次产生的随机数是不是应该不相同吗?但是我的怎么都一样啊 ???是编译器改进的原因吗?

#include <cstdlib>
#include <iostream.h>
int main()
{
cout<<RAND_MAX<<endl;
cout<<rand()<<endl;
cout<<rand()<<endl;
cout<<rand()<<endl;
cout<<rand()<<endl;
return 0;
}

#include<time.h>
main里面加上
for(int i=0:i<4;i++)
{
srand((unsinged)time(NULL) );
cout<<rand()<<endl;
}
随机数要种子的,是伪随机,并不是真是随机追问

我这就是每次都不一样啊。是真随机

追答

你对这个随机理解有问题,他说的随机是你第一次运行跟第二次运行是同一个结果,你可以多运行几次程序你就发现不是真随机了

追问

你意思 是同一个程序中不同的rand()函数产生的随机数不一样。但如果重新运行这个程序的话产生的随机数一样。所以叫伪随机?
对吗?

追答

恩啊,就是这个意思,真正随机应该是没有规律可循的,而且要有可重复性,学过概率应该知道

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-14
看着是不一样,不过如果你反复启动这个程序呢,就一样了,加上种子就不一样了,哦,楼上的类型写错了,应该是unsigned
第2个回答  2011-10-14
要初始化随机数种子,你可以百度搜一下相关资料追问

书上讲应该每次都一样,但我的每次都不一样,所以就不用弄种子了?

相似回答