1. 程式人生 > >一文詳解蒙特卡洛(Monte Carlo)法及其應用

一文詳解蒙特卡洛(Monte Carlo)法及其應用

概述

蒙特卡羅方法是一種計算方法。原理是通過大量隨機樣本,去了解一個系統,進而得到所要計算的值。

它非常強大和靈活,又相當簡單易懂,很容易實現。對於許多問題來說,它往往是最簡單的計算方法,有時甚至是唯一可行的方法。它誕生於上個世紀40年代美國的"曼哈頓計劃",名字來源於賭城蒙特卡羅,象徵概率。

π的計算

第一個例子是,如何用蒙特卡羅方法計算圓周率π。正方形內部有一個相切的圓,它們的面積之比是π/4。


現在,在這個正方形內部,隨機產生10000個點(即10000個座標對 (x, y)),計算它們與中心點的距離,從而判斷是否落在圓的內部。


如果這些點均勻分佈,那麼圓內的點應該佔到所有點的 π/4,因此將這個比值乘以4,就是π的值。通過R語言指令碼隨機模擬30000個點,π的估算值與真實值相差0.07%。

無意識統計學家法則(Law of the unconscious statistician)

這是本文後續會用到的一個定理。作為一個預備知識,我們首先來介紹一下它。先來看一下維基百科上給出的解釋。 
In probability theory and statistics, the law of the unconscious statistician (sometimes abbreviated LOTUS) is a theorem used to calculate the 期望值 of a function g(X) of a 隨機變數 X when one knows the probability distribution of X

 but one does not explicitly know the distribution of g(X). The form of the law can depend on the form in which one states the probability distribution of the 隨機變數 X.

  • If it is a discrete distribution and one knows its PMF function ƒX (but not ƒg(X)), then the 期望值 of g(X) is E[g(X)]=xg
    (x)fX(x)
    where the sum is over all possible values x of X.
  • If it is a continuous distribution and one knows its PDF function ƒX (but not ƒg(X)), then the 期望值 of g(X) is E[g(X)]=g(x)fX(x)dx

LOTUS到底表達了一件什麼事呢?它的意思是:已知隨機變數X的概率分佈,但不知道g(X)的分佈,此時用LOTUS公式能計算出函式g(X)的數學期望。LOTUS的公式如下:

  • X是離散分佈時 E[g(X)]=xg(x)fX(x)
  • X是連續分佈時 E[g(X)]=

    相關推薦

    蒙特卡洛Monte Carlo及其應用

    概述 蒙特卡羅方法是一種計算方法。原理是通過大量隨機樣本,去了解一個系統,進而得到所要計算的值。 它非常強大和靈活,又相當簡單易懂,很容易實現。對於許多問題來說,它往往是最簡單的計算方法,有時甚至是唯一可行的方法。它誕生於上個世紀40年代美國的"曼哈頓計劃",名字

    蒙特卡洛Monte Carlo方法求面積

    pre pytho 編寫 技術 port width 嘗試 python nbsp 如圖,刷微博時,看到一個問題,第一個想到的就是用蒙特卡洛方法求解,當時正在練python,於是嘗試用python編寫程序。 1 import random 2 # 先求s1 3

    4. 免模型策略改進——蒙特卡洛Monte-Carlo和時序差分Temporal-Difference

    other psi 動態 技術分享 獎勵 style 速度 src $1 針對馬爾科夫模型不完全已知,即轉移概率未知,不能全概率展開的情況,上一篇介紹了策略評估的方法,這一篇對應介紹策略改進的方法,分別是 針對每一個完整決策過程,先估計策略再改進策略的蒙特卡洛同策略學習方式

    JAVA學習路線圖

    -h 基礎 tex 蝸牛 學習路線 jdbc sql https ase 此乃是java攻城獅的學習路線圖,由簡到繁,由易到難,一步步的學習,最後成為JAVA攻城獅。 階段1 1:學習HTML 2:學習CSS 3:JavaScript

    什麼是RNN迴圈神經網路

    目錄  1. RNN怎麼來的?  2. RNN的網路結構及原理  3. RNN的改進1:雙向RNN  4. RNN的改進2:深層雙向RNN  4.1 Pyramidal RNN  5. RNN的訓練-BPTT  6. RNN與CNN的結合應用:看圖說話 

    ICCV2017 | GAN之父Ian Goodfellow 演講《生成對抗網路的原理與應用附完整PPT

    當地時間 10月 22 日到10月29日,兩年一度的計算機視覺國際頂級會議 International Conference on Computer Vision(ICCV 2017)在義大利威尼斯開幕。Google Brain 研究科學家Ian Goodfellow在會上作為主題為《生成對抗網路(G

    LVS、Nginx 及 HAProxy 工作原理 附大圖

    當前大多數的網際網路系統都使用了伺服器叢集技術,叢集是將相同服務部署在多臺伺服器上構成一個叢集整體對外提供服務,這些叢集可以是 Web 應用伺服器叢集,也可以是資料庫伺服器叢集,還可以是分散式快取伺服器叢集等等。     在實際應用中,在 Web 伺服器叢集之前總會有一臺負載均

    python的類方法,普通方法和靜態方法

    http 接下來 方法調用 pytho 類和實例 訪問類 靜態 都是 com   首先形式上的區別,實例方法隱含的參數為類實例self,而類方法隱含的參數為類本身cls。 靜態方法無隱含參數,主要為了類實例也可以直接調用靜態方法。   所以邏輯上,類方法被類調用,實例方法

    大規模資料計算處理原理及操作重點

    摘要: 大資料技術主要針對的是大規模資料的計算處理問題,那麼要想解決的這一問題,首先要解決的就是大規模資料的儲存問題。 一、RAID技術 大資料技術主要針對的是大規模資料的計算處理問題,那麼要想解決的這一問題,首先要解決的就是大規模資料的儲存問題。大規模資料儲存要解決的核心問題有三個方面:

    資損率全球最低!「螞蟻風險大腦」

    小螞蟻說: 螞蟻風險大腦是 螞蟻金服結合自身10多年的風險攻防經驗,利用人工智慧、雲端計算、區塊鏈等領先科技手段,融合各地金融監管實踐研發的智慧監管科技系統。  在 9 月的雲棲 ATEC 大會上,螞蟻金服正式開放螞蟻風險大腦 2.0,螞蟻金服的理念是普惠金融,希望把自身的風控技術、風

    卷積和逆卷積

    文章目錄 一文詳解卷積和逆卷積 卷積運算 單通道 多通道 卷積運算的引數計算 逆卷積 卷積運算的矩陣實現 參考資料 一文詳解卷積和逆卷積 卷積神經

    OceanBase 2.0 的“全域性索引”功能

    OB君:本文是 “ OceanBase 2.0 技術解析系列” 的第九篇文章。今天我們來聊聊2.0的全域性索引功能。本文將帶你簡單回顧全域性索引的概念,並詳細介紹OceanBase 2.0版本如何實現全域性索引的功能。更多精彩關注OceanBase公眾號持續訂閱本系列內容! 前言 在資料庫領域

    TCP

    記得以前面試的時候被面試官問起TIME_WAIT有什麼痛點,當時只記得TCP三次握手、四次揮手之類的,至於其中的某個狀態還真是記不起來,之前也沒有過多關注過,還有對於擁塞控制的概念也比較模糊。 TCP報文格式 TCP大家都知道是什麼東西,這個協議的具體報文格式如下: 標

    EAForest區塊鏈

    EAForest是一個以去中心化託管清算技術和先進的交易底層技術打造的、具有獨特核心競爭力的開放量化交易平臺,具備資產安全、交易可信、橫向效能擴充套件等重點優勢。   EAForest主要面向已經或者正在準備經營區塊鏈資產交易業務的合作伙伴提供技術和營運服務,合作伙伴通過EAForest開放平臺

    “單例模式”及其python語言的實現

    一、什麼是“單例模式”——一個例項 單例模式(Singleton Pattern)是一種常用的軟體設計模式,該模式的主要目的是確保某一個類只有一個例項存在。當你希望在整個系統中,某個類只能出現一個例項時,單例物件就能派上用場。 單例模式涉及到一個單一的類,該類負責建立自己的物

    NGram語言模型以及困惑度perplexity

      歡迎關注“勇敢AI”公眾號,更多python學習、資料分析、機器學習、深度學習原創文章與大家分享,還有更多電子資源、教程、資料集下載。勇敢AI,一個專注於人工智慧AI的公眾號。 ==========================================

    matplotlib的配置檔案以及配置方式

    歡迎關注“勇敢AI”公眾號,更多python學習、資料分析、機器學習、深度學習原創文章與大家分享,還有更多電子資源、教程、資料集下載。勇敢AI,一個專注於人工智慧AI的公眾號。 ===================================================

    高效能伺服器架構設計

    引言 本文從一個簡單的伺服器架構,通過討論出現的問題,進行一步一步優化,最後進化成高效能分散式伺服器架構。 初始情況:一個典型的伺服器結構 新增資料訪問層DAL,解決超出連線次數的問題 新增快取,減少與資料庫建立連線 即使添加了DAL,但是資料

    “抽象工廠模式”以及python語言的實現

    一、什麼是“抽象工廠模式”——Abstract Factory Pattern 其實所謂的抽象工廠模式,是在前面講解過的“簡單工廠模式”、“工廠方法模式”的基礎之上進行擴充的。回憶前面的這兩種模式,我們可以得出: 工廠模式:針對一個系列的類(比如Circle、Rectangl

    “工廠方法模式”以及python語言的實現

    一、什麼是“工廠方法模式”——Factory_Method Pattern 概念解析:有的設計模式資料裡面,可能將“工廠方法模式”與上所講的“簡單工廠模式”混為一談,或者是將兩者的概念合併,本文還是將二者分開處理的。 工廠方法模式 是對簡單工廠模式的一個延伸,所以它們誕生的背