蒙特卡洛方法又称统计模拟法,随机抽样技术,是一种随机模拟方法,以概率和统计理论方法为基础的一种计算方法。是使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。将所求解的问题同一定的概率模型相联系,用电子计算机实现统计模拟或抽样,以获得问题的近似解。为象征性地表明这一方法的概率统计特征,故借用赌城蒙特卡罗命名。
下面将采用该方法计算圆周率:
import numpy as np
def pi(n, batch=1000):
# n表示随时数的次数,bach是每组1000
t = 0
for i in range(n // batch):
# 随机获取坐标,生成数组包含batch个二位数组
p = np.random.rand(batch, 2)
# 计算坐标平方和
p = (p * p).sum( axis = 1 )
# 平方和小于1的即为落在圆中的点
t += (p <= 1).sum()
return 4 * t / n
firstPi = pi(10 ** 6)
secondPi = pi(10 ** 8)
print(firstPi)
print(secondPi)
输出结果为:
3.141728
3.14192972