【问题标题】:Picking random lattice points in (x,y) plane在 (x,y) 平面中选取随机格点
【发布时间】: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

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

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

【问题讨论】:

标签: c++ random lattice


【解决方案1】:

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

另请查看 here 以获取文档。

以下是如何使用它进行均匀分布:

    int ran_num(const int start, const int stop)
    {
        random_device rd;
        mt19937 mt(rd());
        uniform_int_distribution dist(start, stop);

        return dist(mt);
   }

希望这对您有所帮助!

【讨论】:

    猜你喜欢
    • 2021-12-19
    • 2014-10-27
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多