蒙特卡洛—模拟蒲丰投针

蒲丰投针实验:
在这里插入图片描述公式推导:
在这里插入图片描述实现代码:

# 其实这里根据已知的pi然后计算出概率算出自己的pi
import numpy as np
import matplotlib.pyplot as plt
import math

# 针的长度
l = 0.520
# 平行线宽度
a = 1.314
# 试验次数n
n = 10000
# 相交次数
count = 0
# 在0~a/2之间产生n个随机数
x = np.random.rand(1, n) * a / 2
phi = np.random.rand(1, n) * math.pi

def test(times):
    global count
    for i in range(0, times):
        if x[0][i] <= 1 / 2 * math.sin(phi[0][i]):
            count = count + 1
            plt.scatter(phi[0][i] ,x[0][i] ,c='r',marker='.')
        else:
            plt.scatter(phi[0][i], x[0][i], c='g',marker='.')
test(n)

p = count / n
mPi = (2 * 1) / (a * p)
print("蒙特卡洛方法得到Pi为:",mPi)
plt.show()

运行结果:
在这里插入图片描述编程小白,望大佬指点

猜你喜欢

转载自blog.csdn.net/weixin_45666249/article/details/114800969