在一个以原点为圆心的圆随机生成均匀分布的点
方法1:
根据圆的表达式,我们可以很容易想出随机生成定义域内的x和y,如果在圆内,则符合要求。
缺点:在圆外的点过多,消耗过大,随机生成一个有效点的概率为π/4
注意:
可能有小伙伴会想通过随机生成x后,再用表达式推导出y,此时y的取值范围:
这样虽然解决了消耗过大的问题,但是算法失去了正确性。我们可以注意到的是,x在靠近R或-R的时候y的取值范围就会越来越小。通过图像反应:就是x靠近R或-R的时候点会比较密集。
方法2:
根据圆的极坐标表达式,最直接的想法是在[0, 2π]的区间取个弧度值θ和[0, R]离圆心的距离r就可以生成一个园内的点。
验证是否满足均匀分布的要求?
先说结论,点离圆r心越近越密集,离圆心越远越稀疏。解释:由于r的取值范围在[0, R]之间,所以同一r生成的点的数量是相同,但是圆的半径会变大,同样数量的点就会显得稀疏,这样就造成圆心密集边缘稀疏的问题。
如何解决?
只要解决好面积增长与距离增长成正比,不均匀的问题迎刃而解。
令r的取值范围为[0, R^2],这样点就能在圆内均匀分布了。
对比起方法1是更优的解法,没有多余的消耗。