是否有可能在每次循环运行时生成不同的随机数。例如,我有:
for (int t=0;t<10;t++)
{
int random_x;
srand ( time(NULL) );
random_x = rand() % 100;
cout<<"\nRandom X = "<<random_x;
}
但问题是,它每次都会生成相同的随机数。是否有可能在每次循环运行时生成不同的随机数?
是否也有可能重置随机数初始化?
发布于 2011-02-08 05:13:39
不要在循环中使用srand
,只使用一次,例如在main()
的开头。而srand()
正是你重置它的方式。
发布于 2011-02-08 05:13:20
您每次都会得到相同的随机数,因为您在循环中设置了一个种子。尽管您使用的是time()
,但它每秒只更改一次,所以如果您的循环在一秒内完成(很可能会完成),您每次都会得到相同的种子值和相同的初始随机数。
将srand()
调用移到循环之外(并且只在应用程序开始时调用一次),您应该会得到随机的“随机”数字。
发布于 2011-02-08 05:14:00
尝试将种子srand
移到循环之外,如下所示:
srand ( time(NULL) );
for (int t=0;t<10;t++)
{
int random_x;
random_x = rand() % 100;
cout<< "\nRandom X = "<<random_x;
}
正如马克·兰瑟姆在评论中所说,只有当循环没有驻留在您多次调用的函数中时,将种子移出循环才会有帮助。
https://stackoverflow.com/questions/4926622
复制相似问题