随机函数在循环中调用时返回相同的数字!C++

Random Function Returns The Same Number When Called Inside A Loop! C++

本文关键字:数字 C++ 返回 函数 循环 调用 随机      更新时间:2023-10-16

我想在我的ff类中创建一个单独的函数来生成一个随机数并返回该数字。当在循环外使用时,该功能似乎可以完美运行。但是,当我将函数放入循环中时,即使我每次都调用随机函数,它也会不断生成相同的数字!我到底做错了什么?!

  //return a random number
  int ff::random_number() const
  {
      srand((unsigned)time(NULL));
      return (rand() % 20 + 1); //in the range of 1 to 20
  }

  //creates an int list of random size and random elements
  int ff::create_random_list()
  {
      list_length = random_number(); //the list size
      list_of_numbers = new int[list_length]; //initilize the list
      for (int i = 0; i < list_length; ++i)
          list_of_numbers[i] = random_number(); //insert a random number
      return 1;
  }
  • 注意:我已经检查了在这个问题之前发布的所有类似问题,但没有回答我的问题。只是为了清楚。

您必须为函数设定种子一次,而不是每次(当您在循环中使用函数时会发生这种情况(。

所以这行:

srand((unsigned)time(NULL));

应该执行一次。