如何用蒙特卡罗方法计算圆周率π。
正方形内部有一个相切的圆,它们的面积之比是π/4
现在,在这个正方形内部,随机产生10000个点(即10000个坐标对 (x, y)),计算它们与中心点的距离,从而判断是否落在圆的内部。
如果这些点均匀分布,那么圆内的点应该占到所有点的 π/4,因此将这个比值乘以4,就是π的值。
from random import random
from math import sqrt
total = 100000
x = y = inn = out = 0.0
for i in range(total):
x = random()
y = random()
#print(x, y)
if (i % (total/10) == 0):
print(i)
if (sqrt(x * x + y * y)<1.0):
inn += 1.0
else:
out += 1.0
print(total, inn, out)
print(inn*4 / total)