1、源码:
import random
import numpy as np
import matplotlib.pyplot as plt
import random
import matplotlib.pyplot as plt
import matplotlib
import matplotlib.pyplot as plt
from scipy.stats import bernoulli
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
matplotlib.rcParams['font.family']='sans-serif'
matplotlib.rcParams['axes.unicode_minus'] = False
def buffon(length,N):
frq = 0
for k in range(N):
d = np.random.uniform(0,0.5)
cita = np.random.uniform(0,np.pi)
if(d<= length*np.sin(cita)/2):
frq = frq + 1
p = frq/N
pai = 2*length/p
return pai
N = 5000
needles = 10000
legth = 0.6
PAI_List = []
for k in range(N):
PAI_List.append(buffon(legth,needles))
PAI_ave = np.mean(PAI_List)
plt.plot(PAI_List,'r')
2、结果:
PAI_ave = 3.14159739081129