<random> 点之间距离最小的uniform_real_distribution

<random> uniform_real_distribution with minimum distance between points

本文关键字:uniform real distribution 距离 random lt gt 之间      更新时间:2023-10-16

我正在使用

生成一个正方形上的坐标列表
#include <random>
using namespace std;
int main(){
random_device rd;
long int seed = rd();
default_random_engine gen(seed);
double max=10.0, min=-10.0;
uniform_real_distribution<double> uni_real(min,max);
double random_x = uni_real(gen);
double random_y = uni_real(gen);
return 0;
}

我想确保任意两点之间有一个最小距离。对于我的使用,当应用周期性边界条件时,这必须保持。

  • 首选的解决方案是<random>库中的内置方法。有吗?
  • 其次,任何其他包含快速执行检查方法的包(只要它易于使用)。
  • 最坏的情况下,我可以写自己的基本脚本,这将是O(n^2),因为我现在不太关心效率。除非,有一些简单的算法可以实现这一点。

其他问题,无论是处理第三点还是<random>的其他环境

而这种抽样(相当于不重叠圆的生成)在数学上进行了讨论。stackexchange,参见https://mathematica.stackexchange.com/questions/2594/efficient-way-to-generate-random-points-with-a-predefined-lower-bound-on-their-p和https://mathematica.stackexchange.com/questions/69649/generate-nonoverlapping-random-circles,我想指出另一个潜在的解决方案,涉及准随机数。对于拟随机Sobol序列,存在一个命题,即点之间的最小正距离为0.5*sqrt(d)/N,其中d为问题的维数,N为在超立方体中采样的点数。男子自己写的论文http://www.sciencedirect.com/science/article/pii/S0378475406002382