【发布时间】:2017-02-15 08:35:36
【问题描述】:
我正在尝试找到随机索引来选择点云中的一些点。 以下是代码。但是,即使在使用 srand() 之后,我也得到相同的数字三次。有人可以帮忙吗?
/* find three points randomly */
for (long i = 0; i < 3; ++i)
{
srand (time(NULL));
cout <<"\nRandom index" << (rand() % points.size() + 1);
}
【问题讨论】:
-
仔细阅读srand()你会发现你的代码有什么问题。
-
是的...$srand()$ 必须被调用一次......在循环之外......谢谢:)
-
您应该注意 rand() 的一些注意事项。最重要的是,rand() 的范围通常非常有限,可以低至 [0, 32767],这意味着您只能从前 32767 个点中选择 3 个点,而点云往往比这大得多. C++11 中有更好的随机数生成器,请参阅:en.cppreference.com/w/cpp/numeric/random 另一个警告是,您不会阻止选择相同的数字两次,这可能是也可能不是问题。您可以像这样创建唯一索引:stackoverflow.com/a/9651058/913630
-
感谢@Markus 提供隐藏的细节 :)
标签: c++11 point-clouds