【发布时间】:2019-07-23 19:15:06
【问题描述】:
我正在尝试找到一种在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 平面上选择随机坐标点?
【问题讨论】:
-
您可能会发现一些更好的随机数生成器,通过查看standard c++ random number facilities 来控制分布概率,而不是原始的
std::rand()函数。 -
嗯,除了前面cmets中的注释,我猜这取决于你对“均匀采样”的定义。 this 够接近吗?
-
非常感谢团队。 @Bob__:您编写代码真的很棒。视觉效果极佳!