【发布时间】:2013-05-12 18:29:34
【问题描述】:
我正在尝试在矩形内生成一定数量的随机均匀点(我知道每个角的坐标对)。
让我们的矩形是 ABCD
我的想法是: 用 AC 对角线将矩形分成两个三角形。求对角线的斜率和截距。 然后,从 [0,1] 区间生成两个随机数,令它们为 a,b。 计算 x = aAB 和 y = bAD(AB、AD、距离)。如果 A 不是 (0,0),那么我们可以添加到 x 和 y A 的坐标。 现在我们有一个点 (x,y)。如果它不在下三角形 (ABC) 中,请跳到下一步。 否则,将点添加到我们的绘图中,并添加 (x,y) 与 AC 对角线的对称,这样我们也可以填充上三角形 (ADC)。
我已经实现了这一点,但我高度怀疑这些点是统一生成的(从情节来看)。我应该如何修改我的算法?我想这个问题与我如何选择三角形和对称的东西有关。
【问题讨论】:
-
您能否详细说明“随机制服”的含义。这些不是互补的想法,我可以设想几种定义“均匀随机”的方法。此外,将您对算法的散文解释重新格式化为伪代码将有助于澄清您在做什么。
-
小心随机分布:The Illusion of Randomness!您可以绘制坐标直方图来验证数据的随机性。
-
“随机均匀”是指我应该生成必须均匀分布在矩形区域中的随机数。
-
让 MATLAB 确定伪随机分布的“均匀性”。如果有的话,分布的均匀性会消除“随机”部分。不要试图操纵你的价值观。取一堆随机点并绘制它们。分组、空白等是伪随机表的废止,如果有的话,它们是质量伪随机分布的证据。即使在均匀分布中,如果我们从它们中随机选择,我们也会期望看到分组、空虚,甚至可能偶尔会连续出现相同的点。
-
你怎么知道我上过多少统计学课程,你在 NSA 吗?我不是在质疑我对均匀分布的理解,而是在质疑 OP,因为他的表述方式与熟悉统计学的人不同,并且听起来像是他误解了他的家庭作业。又名:均匀分布与均匀生成矩形中的随机点?听起来他的期望是网格中的一组点。如果你真的阅读了所有的 cmets,这就很清楚了。如果您在 9 个月后要添加一些富有成效的东西(在此处放置数学笑话),那就去做吧。
标签: linux algorithm matlab geometry octave