rand()/ srand()一直给我零

时间:2016-03-06 09:30:06

标签: c++ c

我有两个生成随机数的函数(第一个函数生成5个随机集,第二个函数只生成一个。我在第一个函数中调用srand(time(NULL)),这样做我没有必要调用它再次在第二个功能。

问题是,对于第二个函数,我保持零(第一个函数很好)。以下是两个函数(这些是整个代码的片段,发布时间太长,除非你们需要它让我知道)。

编辑:我#included< ctime>如果你很好奇,那就不是问题了。

 int Winning_Numbers(int generated[])
 {
     int amount = 5;
     int winning_ticket = generated[amount];

     srand(time(NULL));

     for(int x = 0; x < amount; x++)
     {
         generated[x] = (rand() % 69) + 1;

         while (generated[x] < 1 || generated[x] > 69)
         {
             generated[x] = (rand() % 10) + 1;
         }

         if (x > 0)
         {
             for(int check_number = 0; check_number < x; check_number++)
             {
                 while (generated[x] == generated[check_number])
                 {
                     generated[x] = (rand() % 10) + 1;
                 }
             }
         }
     }

     return winning_ticket;
 }

 int Powerball(int powerball_generated)
 {
     powerball_generated = (rand() % 26) + 1;

     if (powerball_generated < 1 || powerball_generated > 26)
     {
         powerball_generated = (rand() % 10) + 1;
     }

     return powerball_generated;
 }

1 个答案:

答案 0 :(得分:1)

您的代码存在许多小问题,但您要问的问题是您的main函数

int powerball_number;
Powerball(powerball_number);

在这里,您将powerball_number的值作为参数传递给Powerball()函数。但您要做的是让Powerball()返回一个值并将其分配给powerball_number变量。所以你应该写

powerball_number = Powerball();

代替。同时将Powerball()函数更改为

int Powerball()

因为它根本不需要参数。

作为旁注,如果您可以在问题中显示一小段但完整的代码,那么答案者就会容易得多。在这里,您的问题的关键只显示在pastebin片段中,其中一个注释中隐藏了链接,并且我花了一段时间才找到它。