int RandomNum(int n, int nMax)
{
srand(time(NULL));
int r = 1 + rand() % nMax;
while (r == n)
{
r = 1 + rand() % nMax;
}
return r;
}
int _tmain(int argc, _TCHAR* argv[])
{
for (int i = 0; i < 10; i++)
{
int x=RandomNum(4, 100);
std::cout << x << "\n";
}
return 0;
}
我的VS13是狂野还是什么因为它总是在上面的代码执行中输出相同的数字?调试显示输出显示不同的数字,但一次运行不显示:(
答案 0 :(得分:3)
循环很短,并且会在一秒钟内循环遍历所有值。这会导致您对rand
的所有调用都以相同的种子开始。
只需拨打srand
一次,最好在main
功能的早期。
答案 1 :(得分:0)
每次都是你的种子。相反,你只需要做一次。
将srand(time(NULL))
移至main的开头。