OpenCV: RNG生成相同的数字

OpenCV: RNG generates the same numbers

本文关键字:数字 RNG OpenCV      更新时间:2023-10-16

我使用OpenCV,我使用cv::RNG从列表中的图像中随机生成一个百分比:

void chooseImages(const StringVector& imagesListIn, StringVector& imagesListPartOut)
{
  imagesListPartOut.clear();
  if (m_perecent == 1)
  {
    imagesListPartOut = imagesListIn;
  }
  else
  {
    // copy the imagesListIn for being able to remove the chosed images
    int percent = static_cast<int>(m_perecent * imagesListIn.size() + .5);
    cv::RNG randomChooser;
    StringVector listCpy = imagesListIn;
    int index;
    int listSize = imagesListIn.size();
    std::string name;
    for (int i = 0; i < percent; i++)
    {
      index = randomChooser.next() % listSize;
      std::cout << index << " ";
      name = listCpy[index];
      listCpy.erase(listCpy.begin() + index);
      imagesListPartOut.push_back(name);
      listSize = listCpy.size();
    }
    std::cout << std::endl;
  }
}

我的问题是,它总是选择相同的图像;它总是打印相同的数字(cv::RNG总是生成相同的数字)。如何使它产生不同的随机数?

您需要为一个随机启动状态的随机数生成器提供种子。参见rng文档。通常使用计算机的当前时间