蒙特卡羅(monte carlo)演算法並不是一種特定的演算法,而是對一類隨機演算法的特性的概括。它的名字**於賭城蒙特卡羅,象徵概率。它的基本思想是通過大量隨機樣本,去了解乙個系統,進而得到要計算的值。它非常強大靈活,又相當簡單易懂,很容易實現。
隨機演算法分為兩大類:蒙特卡羅演算法和拉斯維加斯演算法,都是以著名的賭城命名的,且都是通過隨機取樣盡可能找到最優解。
下面就用蒙特卡羅隨機取樣的思想近似求解圓周率ππ
正方形內部有乙個內切的圓,通過簡單計算可知內切圓和正方形的面積比為π/4π/4,因此通過在直角座標系的第一象限隨機取點,統計落在圓內的點,其與總取樣點數的比例即為π/4π/4,將該比例乘以4即可得ππ。示意圖和**如下:
x = random.uniform(0,1.0) #在[0,1]區間均勻地隨機取樣
y = random.uniform(0,1.0)
if(x**2+y**2<=1):
count += 1
return 4.0*count/n #注意4要寫成浮點數的形式,否則結果只保留整數
print calcpi(30000) #取30000個樣本點
一次計算結果為3.15226666667,誤差不到0.5%,且取樣點數越多,結果越接近。
1.蒙特卡羅方法入門
2.知乎:蒙特卡羅演算法是什麼
隨機演算法 蒙特卡羅演算法和拉斯維加斯演算法
隨機演算法分成兩類 上圖區分記憶一下 蒙特卡羅是一類隨機方法的統稱,這裡摘一段知乎大神 鵪鶉 的概括 這些蒙特卡羅的應用,肯定對這些有過深刻的了解之後才能總結出來的,以下摘抄 蒙特卡羅演算法 大家聽說過蒙特卡羅求 吧?就是畫乙個正方形和內切圓,隨機撒點,數一下點落在園內和正方形內的數量之比,就是二者...
蒙特卡羅演算法 與 拉斯維加斯演算法
蒙特卡羅演算法並不是一種演算法的名稱,而是對一類隨機演算法的特性的概括。說 蒙特卡羅演算法打敗武宮正樹 這個說法就好比說 我被乙隻脊椎動物咬了 是比較火星的。實際上是zen的演算法具有蒙特卡羅特性,或者說它的演算法屬於一種蒙特卡羅演算法。那麼 蒙特卡羅 是一種什麼特性呢?我們知道,既然是隨機演算法,...
隨機演算法 蒙特卡羅演算法
那麼我們可以理解為,隨機選取一些離散點集合,保證以一定的概率求出近似於 值的最優解,高等數學中求近似解,往往是極限時,為任意小的常數且不為0 這裡提到了根據蒙特卡羅演算法原理,演算法經過多次執行可以得到近似於 的最優解。蒙特卡羅monte carlo 又稱隨機抽樣或統計試驗方法,是以概率和統計理論方...