在c ++中生成1到9之间的随机数

时间:2013-10-08 03:49:02

标签: c++

我需要添加什么,以便它不会连续选择数字为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;
}

1 个答案:

答案 0 :(得分:3)

您需要先初始化random seed

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

srand (time(NULL));

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

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

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

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