我们在这里介绍了如何利用蒲丰投针问题估计 π \pi π,我们再介绍另外一种方法,本质上都一样,都是利用Monte Carlo方法。
如图,随机向一个边长为
1
1
1的正方形里投
n
n
n个豆子,假设其中有
k
k
k个落在了
1
4
\frac{1}{4}
41单位圆中,即图中红色的点。那么根据几何概率,有
k
n
=
π
4
1
\frac{k}{n}=\frac{\frac{\pi}{4}}{1}
nk=14π,从而有
π
=
4
k
n
\pi=\frac{4k}{n}
π=n4k。

用Python实现:
import numpy as np
def get_pi(n):
"""
:param n: 实验次数
:return: π的估计值
"""
#获得n个服从均匀分布U(0, 1)的随机数X, Y
X = np.random.uniform(0, 1, n)
Y = np.random.uniform(0, 1, n)
#实验成功的次数,用向量形式实现,比用for循环要快的多,特别是n很大的时候
k = np.sum(X ** 2 + Y ** 2 <= 1)
#得到π的估计并返回
pi = 4 * k / n
return pi
print(get_pi(10000))
输出:3.1424
输出结果和我们熟知的3.1415926差的较多,是因为我们只模拟了10000次实验,可以增加实验次数来减少误差
博客介绍了利用Monte Carlo方法估计π的另一种方式,即向边长为1的正方形随机投豆子,根据落在单位圆中的豆子数量来计算π。还给出了Python实现代码,因只模拟10000次实验,结果误差较大,可增加实验次数减少误差。
1113

被折叠的 条评论
为什么被折叠?



