C++11 点云中的随机指数

C++11 点云中的随机指数,c++11,point-clouds,C++11,Point Clouds,我试图找到随机指数选择点云中的一些点。 下面是代码。然而,即使在使用srand之后,我三次都得到了相同的数字。有人能帮忙吗 /* find three points randomly */ for (long i = 0; i < 3; ++i) { srand (time(NULL)); cout <<"\nRandom index" << (rand() % points.size() + 1); } 您在同一时间播种随机生成器,每次循环迭代

我试图找到随机指数选择点云中的一些点。 下面是代码。然而,即使在使用srand之后,我三次都得到了相同的数字。有人能帮忙吗

/* find three points randomly */ 
for (long i = 0; i < 3; ++i) 
{
   srand (time(NULL));
   cout <<"\nRandom index" << (rand() % points.size() + 1); 
}

您在同一时间播种随机生成器,每次循环迭代一次

而是在开始时为其播种一次:

/* find three points randomly */ 
srand(time(NULL));
for(int i = 0; i != 3; ++i) {
  cout <<"\nRandom index" << (rand() % points.size() + 1); 
}

您也不需要使用long for循环三个步骤:

仔细阅读您的代码,您会发现代码有什么问题。是的…$srand$必须调用一次..循环外…谢谢:不客气;兰德公司有一些需要注意的问题。最重要的是,rand的范围通常非常有限,可以低至[032767],这意味着您只能从前32767个点中选择3个点,而点云往往比这大得多。在C++11中有更好的随机数生成器,请参阅:另一个警告是,您没有阻止同一个数被选择两次,这可能是个问题,也可能不是问题。您可以创建如下唯一索引:感谢@Markus提供隐藏的详细信息: