用蒙特卡洛方法計算派-python和R語言


用蒙特卡洛方法算pi-基於python和R語言

最近follow了MOOC上一門python課,開始學Python。同時,買來了概率論與數理統計,准備自學一下統計。(因為被鄙視過不是統計專業卻想搞數據分析)

有趣的是書里面有一塊講蒲豐投針計算Pi,這是一種隨機模擬法,也就是蒙特卡洛法。蒲豐投針之於我太難,暫時沒想到怎么用計算機模擬這一過程。

python課中,老師也提到用隨機模擬法,也就是蒙特卡洛法(MonteCarlo),用計算機模擬幾千次實驗,計算pi的近似值。好巧。

就拿python課中的方法,來近似計算pi,分別用python和R實現一下。

至於實驗是怎樣的,截圖老師的PPT。

我用的是python 3

python代碼:

from random import random
from math import sqrt
from time import clock
darts=2**22
hist=0
clock()
for i in range(1,darts):
    x,y=random(),random()
    dist=sqrt(x**2+y**2)
    if dist<=1.0:
        hist=hist+1
pi=4*(hist/darts)
print('pi is %s'%pi)
print('elaspe is %ss'%clock())

python運行結果:

pi is 3.143444061279297
elaspe is 85.991785

R 代碼:

#蒙特卡洛方法求pi
hist <- 0
darts <- 2^22
start <-proc.time() 
for (i in 1:darts){
    x <- runif(1);y <- runif(1)
    if(sqrt(x^2+y^2)>1) next
    hist=hist+1
}
pi <- 4*hist/darts
proc.time()-start
print(paste0('pi is ',pi))

R運行結果:

> proc.time()-start
  用戶   系統   流逝 
31.537  2.477 34.153 
> print(paste0('pi is ',pi))
[1] "pi is 3.14076137542725"

  

總結:R和python都挺好用的,下一步准備試着用python寫點小爬蟲程序。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM