关于产生随机数

来源:百度知道 编辑:UC知道 时间:2024/09/14 20:08:45
srand((unsigned)time(NULL));
for(i=0;i<10;i++)
{
a=rand();
cout<<a<<endl;
}
上面这个函数能产生10个随机数
但是改成下面的时候产生的数都相同了,这是为什么呀?
for(i=0;i<10;i++)
{
srand((unsigned)time(NULL));
a=rand();
cout<<a<<endl;
}
谢谢各位的热心回答,我对srand()函数还是有点不懂,它不是以时间为依据来产生随机种子的吗,貌似我在程序中运行srand()时所产生的随机种子是相同的,难道运行一次循环的时间可以忽略不计吗?因此他每次循环产生随机种子相同,是这个原因吗?

srand函数是随机数发生器的初始化函数需要有种子,种子相同,产生的随机数也就相同,
你用的参数是(unsigned)time(NULL),即以(unsigned)time(NULL)为种子,在第二个函数里,你不断重复初始化种子,而且有相同,当然产生相同的随机数了,在我的印象里srand函数产生的随机数叫做伪随机数,并不是真正意义上的随机数。
我想应该是的,一次循环运行的时间是相当段的,对于时间参数中的time来说是忽略的。

因为你的循环跳出外面了!
srand((unsigned)time(NULL));
a=rand();
这句产生了相同的随机数!并且循环十次!
主次要分清了!