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

Thr*_*iag 7 c++ random

我正在使用广场生成坐标列表

#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;
}
Run Code Online (Sandbox Code Playgroud)

我想确保任意两点之间的距离最小.对于我的用法,当应用周期性边界条件时,这必须成立.

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

关于处理第三点或其他环境的其他问题<random>.

Sev*_*eux 3

虽然 math.stackexchange 上讨论了这种采样(相当于非重叠圆圈生成),但请参阅https://mathematica.stackexchange.com/questions/2594/efficient-way-to-generate-random-points-with- a-predefined-lower-bound-on-their-phttps://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