用python估计π的第二种方法

 我们在这里介绍了如何利用蒲丰投针问题估计 π \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次实验,可以增加实验次数来减少误差

猜你喜欢

转载自blog.csdn.net/TSzero/article/details/111928172