linux – 在矩形内生成随机点(统一)?

我试图在矩形内生成一定数量的随机均匀点(我知道每个角的坐标对).

让我们的矩形
A B C D

我的想法是:
通过AC对角线将矩形划分为两个三角形.求斜率和对角线的截距.
然后,从[0,1]间隔生成两个随机数,让它们成为a,b.
评估x = aAB和y = bAD(AB,AD,距离).如果A不是(0,0),那么我们可以添加到x和y A的坐标.
现在我们有一个点(x,y).如果它不在下三角形(ABC)中,请跳至下一步.
否则,将点添加到我们的绘图中,并添加(x,y)与AC对角线的对称性,以便我们也可以填充上三角形(ADC).

我已经实现了这一点,但我非常怀疑这些点是统一生成的(从图中判断).我应该如何修改我的算法?我猜这个问题与我如何选择三角形和对称的东西有关.

最佳答案
这被称为point picking和其他类似术语.你似乎走在正确的轨道上,因为这些点应该来自均匀分布.你的情节对我来说看起来很随机.

你在做什么用上三角和下三角?它们似乎是不必要的,肯定会减少随机性.是否有一些形式的差异减少了antithetic variates?如果@ Paddy3118是正确的,你真的需要随机点来填充空间,那么你应该看看low-discrepancy sequences. Halton sequencevan der Corput sequence推广到多个维度.如果您有Matlab的统计工具箱,请查看sobolsethaltonset函数或qrandstreamqrand.

转载注明原文:linux – 在矩形内生成随机点(统一)? - 代码日志