以下摘自百度百科:3 m) A' z6 s/ ~3 `7 D, x 蒙特卡罗模拟因摩纳哥著名的赌场而得名。它能够帮助人们从数学上表述物理、化学、工程、经济学以及环境动力学中一些非常复杂的相互作用。数学家们称这种表述为“模式”, 而当一种模式足够精确时, 他能产生与实际操作中对同一条件相同的反应。但蒙特卡罗模拟有一个危险的缺陷: 如果必须输入一个模式中的随机数并不像设想的那样是随机数, 而却构成一些微妙的非随机模式, 那么整个的模拟(及其预测结果)都可能是错的。. }3 Z: r( A7 u# h9 W
3 {5 s* b4 n8 H( a
鄙人谈几句话:$ J( R3 e9 o8 e, D1 I" t
蒙特卡罗模拟的用处非常广,而且蒙特卡罗模拟听起来有点高端霸气上档次,其实蒙特卡罗模拟的原理很简单,就是利用“随机”去创造一个数学模型,从而模拟复杂的系统来解决问题。下面是蒙特卡罗模拟的一个简单应用例子,求解pi的近似解。我们知道pi的9位有效数字的近似值是3.14159265。然后我使用的蒙特卡罗原理是这样的:单位长度为1的正方形中,我们在其中的一条对角线画一条弧得出一个扇形,刚好是单位为1的圆的1/4。如graph1。
% _7 S7 ^$ O( \( O ) X0 s0 e. t! M Y6 H然后我们在正方形内生成随机的点。然后统计点在弧线下方出现的次数。弧下方的点数/总点数=1/4倍的单位圆面积=(πr^2)/4,r=1。然后我们就可以得出pi的值。 6 n( u o4 f! m2 V: A \7 L1 w. P: A i3 Q0 C+ e1 w
以下是鄙人的蒙特卡罗模拟求pi的python程序: # Q0 U4 A. ^+ O: d#Author : Naupio, M$ v- J2 r q5 g& I9 O
import random as rd ' ^* t' p% ]0 u- ~/ R& H* C+ u: c. V$ Q$ H6 b& i
# H7 X9 J: t& X: a% mdef findpi(times = 1000): + J2 C Z1 Q+ S4 h counts = 0.0, [, z8 m7 |6 w8 N' u' z
for i in range(times):2 F0 Z# L( _* Z3 c' h
x = rd.random() 4 ?& e6 T& _0 M5 p& v4 ?2 m% C y = rd.random() L8 N4 J, q6 r$ L" [ if (x**2+y**2)<1:1 P1 k7 I& c0 @0 n
counts+=1" v# i6 k% `0 F+ b, Q
return (counts*4)/(times*1)3 |: N- M! m: S! l% _6 W
( Q& v0 A& ]7 O6 F