寫(xiě)的有些潦草,哈哈
為什么蒙特卡羅法里為什么是4乘落在圓內(nèi)的除以整個(gè)所有的點(diǎn)。用面積比例求出來(lái)。
S圓=PI*R*R
S方=2*2=4
S圓/S方 = 落在圓內(nèi) / 落在方形內(nèi)所有
S圓=PI*1*1=PI
S圓=S方 * 落在圓內(nèi) / 落在方形內(nèi)所有
S方 = 2 * 2 整個(gè)正方形的變長(zhǎng)是2
所以前邊乘以4
import random
def estimatePi(times): # times是往正方形內(nèi)射入飛鏢的個(gè)數(shù)
hists = 0 # 定義落入圓內(nèi)的飛鏢的次數(shù)
cnt = 0 # 記錄飛鏢落入圓內(nèi)的個(gè)數(shù)
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)