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

rand() / srand() keeps giving me zero

本文关键字:srand rand 一直      更新时间:2023-10-16

我有 2 个生成随机数的函数(第一个函数生成 5 个随机集合,第二个函数只有一个。我在第一个函数中调用了 srand(time(NULL)),这样我就不必在第二个函数中再次调用它。

问题是,对于第二个函数,我一直得到零(第一个函数很好)。这是两个函数(这些是整个代码的片段,太长了,无法全部发布,除非你们需要它让我知道)。

编辑:如果你好奇,我 #included ,所以这不是问题。

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

你的代码有很多小问题,但你要问的是,在你的main函数中,你有

int powerball_number;
Powerball(powerball_number);

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

powerball_number = Powerball();

相反。 同时将 Powerball() 函数更改为仅

int Powerball()

因为它根本不需要争论。

作为旁注,如果你能展示一段小而完整的代码,在你的问题中显示你的问题,那么回答者就会容易得多。 在这里,您问题的关键仅显示在 pastebin 片段中,其链接隐藏在其中一条评论中,我花了一段时间才找到它。