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

时间:2017-06-12 09:43:55

标签: c++ random

我想在我的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;
  }
  • 注意:我已经检查了在此问题之前发布的所有类似问题,但没有回答我的问题。只是要清楚。

1 个答案:

答案 0 :(得分:1)

你必须为函数播种一次,而不是每次播放(当你在循环中使用你的函数时会发生这种情况)。

所以这一行:

srand((unsigned)time(NULL));

应该执行一次。