如何在保持最小距离的同时沿有限的线随机采样?

时间:2019-06-13 02:56:04

标签: c++ math statistics

另一种说法可能是“如何沿着一条线随机分布已知数量的点并在它们之间保持最小距离”。

如果我有一个容器 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;
}

如何完成以上循环?

1 个答案:

答案 0 :(得分:1)

您有n个点分散在全长L上,相邻点之间的最小距离为d。

因此将它们分散在总长度L-(n-1)d上。然后以x递增的顺序对其进行迭代,从P 0 到P n-1 ,将每个点P k 移至距离kd是的。