Algorithm之MC:Monte Carlo method蒙特·卡罗方法的简介、实现、应用
Algorithm之MC:Monte Carlo method蒙特·卡羅方法的簡介、實現、應用
?
?
目錄
隨機算法
MC的簡介
MC的應用
?
?
?
隨機算法
? ?隨機算法分為兩大類:蒙特卡羅算法和拉斯維加斯算法,都是以著名的賭城命名的,且都是通過隨機采樣盡可能找到最優解。
(1)、這兩類隨機算法之間的選擇,往往受到問題的局限。
?? ? ? ? ?如果問題要求在有限采樣內,必須給出一個解,但不要求是最優解,那就要用蒙特卡羅算法。
?? ? ? ? ?反之,如果問題要求必須給出最優解,但對采樣沒有限制,那就要用拉斯維加斯算法。
?? ? ? ? ?比如,機器圍棋程序,因為每一步棋的運算時間、堆棧空間都是有限的,而且不要求最優解,所以ZEN涉及的隨機算法,肯定是蒙特卡羅式的。
MC的簡介
? ? ? ?Monte Carlo method,也稱隨機抽樣法、統計模擬方法,是二十世紀四十年代中期由于科學技術的發展和電子計算機的發明,而被提出的一種以概率統計理論為指導的一類非常重要的數值計算方法。是指使用隨機數(或更常見的偽隨機數)來解決很多計算問題的方法。與它對應的是確定性算法。
MC思想:當所求解問題是某種隨機事件出現的概率,或者是某個隨機變量的期望值時,通過某種“實驗”的方法,以這種事件出現的頻率估計這一隨機事件的概率,或者得到這個隨機變量的某些數字特征,并將其作為問題的解。
? ? ?它的基本思想是通過大量隨機樣本,去了解一個系統,進而得到要計算的值。它非常強大靈活,又相當簡單易懂,很容易實現。
MC三步驟:蒙特卡羅方法的解題過程可以歸結為三個主要步驟:構造或描述概率過程;實現從已知概率分布抽樣;建立各種估計量。
?
MC的應用
1、正方形內部有一個內切的圓,通過簡單計算可知內切圓和正方形的面積比為π/4π/4,因此通過在直角坐標系的第一象限隨機取點,統計落在圓內的點,其與總取樣點數的比例即為π/4π/4,將該比例乘以4即可得π。示意圖和代碼如下:?
#-*-coding:utf-8-*- import random def calcPi(n):count = 0for i in range(n):x = random.uniform(0,1.0) #在[0,1]區間均勻地隨機取樣y = random.uniform(0,1.0)if(x**2+y**2<=1): #if判斷每當隨機點落在半圓內,就統計一次count += 1 if(count%3000)==0: #每3000個點,輸出一次print(4.0*count/n )return 4.0*count/n #注意4要寫成浮點數的形式,否則結果只保留整數 print(calcPi(30000)) #取30000個樣本點0.4 0.8 0.8 1.2 1.6 2.0 2.0 2.4 2.8 3.1345333333333332、Matlab之Monte Carlo:基于Matlab實現通過蒙特卡洛方法模擬二維布朗運動
?
?
?
?
?
總結
以上是生活随笔為你收集整理的Algorithm之MC:Monte Carlo method蒙特·卡罗方法的简介、实现、应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CUMCM之2006B:2006之B题:
- 下一篇: Algorithm之MC:基于Matla