另一种说法可能是“如何沿着一条线随机分布已知数量的点并在它们之间保持最小距离”。
如果我有一个容器 n ,并且要沿着长度为 L 的有限线分布,该如何随机进行。它们的分配顺序并不重要,因此,为什么我的问题标题是“样本”。
#include <iostream>
#include <vector>
int main()
{
std::vector<int> samplePoints;
int lineLength = 100;
int numPoints = 20;
int minDistance = 3;
for(int i = 0; i < numPoints; ++i)
{
/* how do I distribute these points? */
}
for(const int p : samplePoints)
std::cout << p << std::endl;
return 0;
}
如何完成以上循环?
答案 0 :(得分:1)
您有n个点分散在全长L上,相邻点之间的最小距离为d。
因此将它们分散在总长度L-(n-1)d上。然后以x递增的顺序对其进行迭代,从P 0 到P n-1 ,将每个点P k 移至距离kd是的。