c++ - 在 (x,y) 平面中选取随机格点

标签 c++ random lattice

我试图找到一种在 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是一个介于0L^2之间的随机整数。 x 坐标是 m mod L,它是 0L 之间的数字。 y 被设置为最接近m/L 的整数,0L 之间的整数。

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

最佳答案

尝试研究伪生成器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);
   }

希望这对您有所帮助!

关于c++ - 在 (x,y) 平面中选取随机格点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54949980/

相关文章:

PHP MySQL 从表中选择随机值

haskell - 如何在Haskell中创建格型数据结构?

r - 更改地层图(即多面板图)上的 x 轴限制

c++ - 使用声明和 const 重载

python - 随机颜色文本生成

c++ - 无法进行混合工作

c++ - 如何制作一个 n*n 矩阵的输出文件,通过从用户那里获取 n,成对生成数字?

删除条形图中每个面板未使用的因素

c++ - 构造函数定义 C++

c++ - C++ 中的 new Bytef[int] 是什么?