在(x,y)平面中挑选随机格点

问题描述 投票:1回答:1

我正试图找到一种在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最接近的整数,0LL^2之间的整数。

它似乎有效,但在x运行中,我们是否更有可能搜索yx系统的一部分而不是另一部分?任何人都可以解释为什么,以及是否有一种替代方法在yMersenne Twister平面上采样随机坐标点,统一采样空间?

c++ random lattice
1个回答
0
投票

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

Here is how you can use it for uniform distribution:
qazxswpoi

希望这在某种程度上有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.