<random> 点之间距离最小的uniform_real_distribution
<random> uniform_real_distribution with minimum distance between points
我正在使用
生成一个正方形上的坐标列表#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
相关文章:
- 点运算符 (.) 是"real"运算符吗?
- 常量参数"real"常量吗?
- C ++引用函数参数似乎包含原始对象的副本,而不是充当"real reference"
- 当由glUniformMatrix4fv创建时,Uniform mat4具有未知值
- QML/real和C++/float之间的Qt类型错误
- 在日食中获取无法执行 g++.real 错误
- 了解"Real world modelling"程序
- Uniform和Value初始化
- 使用 BER 编码和解码 ASN.1 REAL
- LLVM Callinst 函数如何获取 (real)Name
- <double> 复杂C++ - 不能使用 imag()、complex()、real()
- 实现QProcess的最佳方法是什么,在"real time"中读取stdout和stderr?
- 如何查找"real"错误?
- 关于渲染系统架构布局的建议-Real time/HLSL/DirectX9/ c++
- SQLite文本转换为整数或REAL在c++做太多