matlab:圆内均匀随机取点

本文介绍了在圆内均匀取点的两种方法——舍选法和反函数法,并通过数学推导和代码实现详细解析了这两种方法。反函数法在MATLAB中取点速度更快,适用于需要高效生成均匀分布随机点的场景。

这里介绍两种圆内均匀取点的方法:舍选法和反函数法。

1.舍选法

顾名思义,舍选法是指在正方形(边长等于圆直径)的上面均匀撒点,然后在正方形上画圆,超出圆形的舍弃掉,只保留圆内的点:

效果如下

2.反函数法

一般取某个概率密度函数下的随机数,会用到反函数法,这里的反函数指的是累积分布函数的反函数。如图所示,纵轴为概率,横轴为随机数的取值,可以看到在纵轴区间相等的间隔内,横轴不同的随机数被取到的概率是不同的,但是相同间隔内的概率是相等的,也就是说纵轴的随机数是均匀的,当我们在按照均匀分布在纵轴上随机取(0,1)区间中的随机数的时候,会对应到的累积分布函数的横坐标的值,而这个过程即是取某个概率密度函数下的随机数的过程。对于上述的理解至关重要,较好的理解方式是等纵轴间隔下对应横坐标的某区间,而这个区间被取到的概率就是对应的纵轴的区间概率值的大小。

在此处的问题中,随机点要在圆内均匀分布,按照字面上理解,意思应该是每单位的面积点的数量要相同,即数量要和面积呈正比。那么,接下来的工作就是找到在半径R上的点的分布密度。

上图为圆的一部分,是一个扇形,张角即为 θ \theta θ,由圆心O到A的距离为 r 0 r_{0} r0,由A到B的距离为 Δ r \Delta r Δr,那么我想计算AB这段对应的面积,应该有如下公式计算得出:

S 0 = π ( r 0 + Δ r ) 2 θ 2 π − π r 0 2 θ 2 π = θ 2 ( 2 r 0 Δ r + Δ r 2 ) \begin{aligned} S_{0}&=\frac{\pi(r_{0}+\Delta r)^{2}\theta}{2\pi}-\frac{\pi r_{0}^{2}\theta}{2\pi}\\ &=\frac{\theta}{2}(2r_{0}\Delta r+\Delta r^{2}) \end{aligned} S0=2ππ(r0+Δr)2θ2ππr02θ=2θ(2r0Δr+Δr2)

相应的,在R上取另一段长度记为 r 1 r_{1} r1,也有对应在 r 1 r_{1} r1处的面积。

S 1 = π ( r 1 + Δ r ) 2 θ 2 π − π r 1 2 θ 2 π = θ 2 ( 2 r 1 Δ r + Δ r 2 ) \begin{aligned} S_{1}&=\frac{\pi(r_{1}+\Delta r)^{2}\theta}{2\pi}-\frac{\pi r_{1}^{2}\theta}{2\pi}\\ &=\frac{\theta}{2}(2r_{1}\Delta r+\Delta r^{2}) \end{aligned} S

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值