写的有些潦草,哈哈
为什么蒙特卡罗法里为什么是4乘落在圆内的除以整个所有的点。用面积比例求出来。
S圆=PI*R*R
S方=2*2=4
S圆/S方 = 落在圆内 / 落在方形内所有
S圆=PI*1*1=PI
S圆=S方 * 落在圆内 / 落在方形内所有
S方 = 2 * 2 整个正方形的变长是2
所以前边乘以4
import random
def estimatePi(times): # times是往正方形内射入飞镖的个数
hists = 0 # 定义落入圆内的飞镖的次数
cnt = 0 # 记录飞镖落入圆内的个数
for i in range(times):
x = random.random() * 2 - 1 # x in the interval [0, 1) ---[-1,1]
y = random.random() * 2 - 1
if x * x + y * y <= 1:
hists += 1
cnt += 1
if cnt >= times:
break
return 4.0 * hists / times
result = estimatePi(100000)
print(result)