正方形的格子内,均匀地播撒沙子,例如10000颗沙子均匀铺满后,以一个顶点为圆心,以正方形边长为半径,则画出一个四分之一的圆如下
image.png统计四分之一圆内的沙子数量,就可以推导出圆周率pi
增加沙子的数量到50000会是怎样?
先看代码
import matplotlib.pyplot as plt
import random
targ = []
in_circle = 0
xs, ys , ins = [],[],[]
for i in range(40000):
x = random.random()
y = random.random()
radius = (x**2 + y**2) **.5
if radius <= 1:
in_circle += 1
ins.append(1)
else:
ins.append(0)
xs.append(x)
ys.append(y)
targ.append(4*in_circle/len(xs))
fig, axs = plt.subplots(ncols=2,figsize = (8,4))
axs[0].scatter(xs,ys,alpha=.01,c=ins)
axs[1].plot(targ)
axs[1].set_ylim(3.12, 3.18)
image.png
四分之一圆颜色更加丰满,圆周率的统计值经过上下起伏幅度大,逐渐收敛到3.14附近
网友评论