srand(time(0))
好像没有播种rand()
正确的是,生成的第一个数字始终是相同的。
这是在 OS X 上运行的,我的设置或代码有问题吗?我确实等待了几秒钟来重新运行该程序。第一个数字仅在一天后增加,其余数字始终是随机的。
#include<iostream>
using namespace std;
int main ()
{
int Num1,Num2;
// seed the random number generator
srand((unsigned int )time(NULL));
Num1 = rand() %49 +1 ;
do {Num2 = rand() % 49 + 1;}
while(Num2 == Num1);
///Display Random Numbers
cout<<"Numbers are: "<<endl;
cout<<Num1<<" "<<Num2<<endl<<endl;
return 0;
}
您会得到相同的数字,因为种子的值非常接近,并且随机生成器还没有时间发散。在 OS X 上使用sranddev()
代替srand()
,它会给你一个更好的种子并避免这个问题。
#include<iostream>
using namespace std;
int main()
{
int a, b;
// seed the random number generator
sranddev();
a = rand();
b = rand();
cout << a << " " << (a % 49) + 1 << endl
<< b << " " << (b % 49) + 1 << endl << endl;
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)