在(x,y)平面上拾取随机晶格点

时间:2019-03-01 17:58:06

标签: c++ random lattice

我正在尝试寻找一种在xy平面中选择随机晶格点的方法。建议使用以下代码:

//////////////////////
// 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

换句话说:m0L^2之间的随机整数。 x坐标是m mod L,它是0L之间的数字。 y被设置为最接近m/L的整数,它是0L之间的整数。

这似乎可行,但是在L^2运行中,我们是否更可能搜索xy系统的一部分?谁能解释为什么?是否还有另一种方法可以在均匀采样空间的xy平面上拾取随机坐标点?

1 个答案:

答案 0 :(得分:0)

尝试研究伪生成器Mersenne Twister,该伪生成器可从C ++ 11获得。 希望对您有帮助。

另请参阅here以获得文档。

这是如何使用它进行均匀分布:
ab[23]

希望这对您有所帮助!