. E5 l, |( Q1 c+ T( v9 d然后我们在正方形内生成随机的点。然后统计点在弧线下方出现的次数。弧下方的点数/总点数=1/4倍的单位圆面积=(πr^2)/4,r=1。然后我们就可以得出pi的值。6 G0 y8 ^3 S. @/ r d: D/ B
9 G8 f8 E! H, q- U2 @, I以下是鄙人的蒙特卡罗模拟求pi的python程序: 3 U' L: R5 y A' w: }4 ?#Author : Naupio : t. ]3 t- J: X2 Vimport random as rd1 V( N2 { m) G/ U A
0 u3 `" L3 _2 r1 [! a' }5 X
' E/ `+ K2 a% bdef findpi(times = 1000): 8 s" p/ Y. D& O5 i. V counts = 0.0 6 f% Y) a# x4 S for i in range(times):+ b9 p" D; C$ W: g+ v( m& [
x = rd.random()9 F8 d2 G- O8 u% Q. o; P" p
y = rd.random()! k2 H9 h: J' B7 v, u2 @, a! |
if (x**2+y**2)<1: % t( N8 l8 S1 M+ n, T5 t counts+=1 6 T& J5 z4 L$ h' {: D% C v return (counts*4)/(times*1) & |9 Z$ O) P2 ]$ _# ~! k( R9 G( D$ F; x0 N; g
I% {1 q1 k8 mprint "蒙特卡罗模拟一千次得出的pi近似值为:",findpi(1000) 8 z9 Z3 q4 L0 Q% }: h3 Z, }+ w- oprint "蒙特卡罗模拟一万次得出的pi近似值为:",findpi(10000)3 M8 z( V. h5 X- }2 r6 V
print "蒙特卡罗模拟十万次次得出的pi近似值为:",findpi(100000) # ~$ M X: b' i. F' D" sprint "蒙特卡罗模拟一百万次得出的pi近似值为:",findpi(1000000) - o4 g+ A3 v, F7 Bprint "蒙特卡罗模拟一千万次得出的pi近似值为:",findpi(10000000)8 I% ~ c4 s9 ?
print "蒙特卡罗模拟五千万次得出的pi近似值为:",findpi(50000000) / ?/ `3 f7 W/ j+ g