一分鐘了解蒙特卡洛方法

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

圓周率π的計算

單位圓面積為π,并且內切與邊長為2的正方形,用隨機數,10000個點往下面投,落到圓里面的概率乘以4就是π的值

說明:等式左邊,是圓與正方形面積之比;等式右邊,是落在單位圓內的點與落在正方形內的點的比值。二者相等。

分析

1、以圓心為原點,建立二維坐標系;











2、隨便投一個點,這個記為(x, y),落在圓內,則到圓心的距離 x*2 + y*2 <= 1;

3、投點10000次,落入圓內次數n,π值為n / 10000 * 4;

Python代碼

分析好了,代碼就很容易實現了,

import random

def run():
    n = 10**4
    n_pai = 0
    for i in range(1, n + 1):
        x = random.random()
        y = random.random()

        # 落在單位圓內部
        if x**2 + y**2 <= 1:
            n_pai = n_pai + 1

    pai = n_pai / float(n) * 4

    print(pai)

if __name__ == '__main__':
    run()
Python

4次模擬結果

3.142

3.1424

3.1368

3.156

代碼Github地址:  https://github.com/ddxygq/PyCode





作者:柯廣的網絡日志

微信公眾號:Java大數據與數據倉庫