C++ 在循环内调用时,Random函数返回相同的数字!C++;

C++ 在循环内调用时,Random函数返回相同的数字!C++;,c++,random,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

我想在
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;
  }
//返回一个随机数
int ff::随机数()常量
{
srand((无符号)时间(NULL));
return(rand()%20+1);//范围为1到20
}
//创建随机大小和随机元素的整数列表
int ff::创建随机列表()
{
list_length=random_number();//列表大小
list_of_numbers=new int[list_length];//初始化列表
对于(int i=0;i
  • 注意:我已经检查了在此问题之前发布的所有类似问题,但没有任何问题回答我的问题。我只是想说清楚

必须对函数进行一次种子设定,而不是每次(在循环中使用函数时会发生这种情况)

所以这一行:

srand((unsigned)time(NULL));

应该执行一次。

@Sneftel这很有用,但称之为完全重复并不公平!我假设(未签名)时间(NULL)在循环内返回相同的值,因此您在每次循环迭代中将伪随机numebr生成器设置为相同的状态,并且它每次都给您相同的伪随机数(如预期的那样)