我正试图找到一种在x
,y
平面中选择随机格点的方法。建议我使用以下代码:
//////////////////////
// Pick random site //
//////////////////////
int m=int(rand()*1.0/RAND_MAX*L*L);
int mx=m%L; //x coordinate of m site
int my=int(m*1.0/L); // y coordinate of m site
换句话说:m
是0
和L^2
之间的随机整数。 x
坐标是m mod L,这是0
和L
之间的数字。 y
被设置为与m/L
最接近的整数,0
是L
和L^2
之间的整数。
它似乎有效,但在x
运行中,我们是否更有可能搜索y
,x
系统的一部分而不是另一部分?任何人都可以解释为什么,以及是否有一种替代方法在y
,Mersenne Twister平面上采样随机坐标点,统一采样空间?
尝试研究伪生成器here,它可以从C ++ 11获得。希望这对你有所帮助。
另请查看
int ran_num(const int start, const int stop)
{
random_device rd;
mt19937 mt(rd());
uniform_int_distribution dist(start, stop);
return dist(mt);
}
文档。
qazxswpoi
希望这在某种程度上有所帮助!