考虑在半径为1的圆盘上均匀的取随机点应该怎么做?
Rejection Sampling
首先想象有一个2X2的单位正方形,然后取得(-1,1)分布均匀随机数x和y作为坐标随机分布在正方形内,如果该点坐标离正方形中心距离大于1那么就重新采样,直到采样点在单位圆内为止。这种方式很直观,然而性能上却有所不足。
极坐标
首先生成角度(0,2π),再生成半径分布在(0,1)即可。那么问题来了,系统随机生成的随机数是在(0,1)上均匀分布的,那么如果直接采用均匀分布半径我们的采样点是否是在面积上均匀的呢?下图是实验结果:
可以看出答案是否定的,因为离中心点越近的地方显然占据的相对面积也越小,因此均匀分布的半径会让中心附近生成的采样点越多。
那么我们要如何对均匀分布的采样值操作才能让新生成的变量的PDF满足圆盘均匀呢?在网上搜索了一番发现只要对生成的01均匀分布变量x取根号即可:
可以看到此时便能得到正确结果。以下是勉强回想起自己学过的统计学知识的证明:
更进一步复习其实发现直接套用密度变换公式即可: