我需要添加什么,以便它不会连续选择数字为8而是选择数字1到9中的任何一个?函数srand?
int main()
{
int iRand = (rand() % 9+1);
if (iRand==1)
{
cout << "The planet of the day is Mercury!" <<endl;
cout << "Mercury is the closest planet to the sun." <<endl;
}
else if (iRand==2)
{
cout << "The planet of the day is Venus!" <<endl;
cout << "Venus is the hottest planet in our solar system." <<endl;
}
// .... 3..4..5..6..7..8
else
{
cout << "The planet of the day is Pluto!" <<endl;
}
return 0;
}
答案 0 :(得分:3)
您需要先初始化random seed!
#include <stdlib.h> /* srand, rand */
#include <time.h> /* time */
srand (time(NULL));
像rand()
这样的伪随机数生成器实际上并不是完全随机的。相反,数字由生成器的初始状态确定,称为种子。你的程序,就像它现在一样,每次执行都会有相同的种子 - 因此随机数每次都是相同的。
srand()
救援 - 它允许你指定种子。
如果你要指定一个常量种子(如srand(2)
)那么你就会遇到与现在相同的问题,只是结果不同。因此,为了在每次程序执行时保证不同的结果,我们可以用当前时间初始化随机数发生器 - 只要你永远不会及时旅行,你就永远不会得到完全相同的数字序列。 / p>
(注意:在现实世界的应用程序中,这可能不太好,因为有人可以通过(例如)手动将系统时钟重置为不同的时间来重复过去的结果。从someone did once偷取赌场的钱。 )