-1

我需要添加什么,以便它不会连续选择数字为 8,而是选择数字 1 到 9 中的任何一个?斯兰德?

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;
}
4

1 回答 1

3

您需要先初始化随机种子

#include <stdlib.h>     /* srand, rand */
#include <time.h>       /* time */

srand (time(NULL));

像这样的伪随机数生成器rand()实际上并不是完全随机的。相反,数字由生成器的初始状态(称为种子)确定。你的程序,就像它现在存在的那样,在每次执行时都会有相同的种子——因此随机数每次都是相同的。

srand()救援 - 它允许您指定种子。

如果您要指定一个常量种子(如srand(2)),那么您将遇到与现在相同的问题,只是结果不同。因此,为了保证程序每次执行的结果都不同,我们可以用当前时间初始化随机数生成器——所以只要你永远不会及时旅行,你就永远不会得到完全相同的数字序列。

(注意:在现实世界的应用程序中,这可能不好,因为有人可以通过(例如)手动将系统时钟重置为不同的时间来重复过去的结果。有人曾经这样做过从赌场偷钱。)

于 2013-10-08T03:50:50.203 回答