Monte-Carlo

任意函數的蒙特卡羅模擬

  • October 5, 2021

我熟悉近似 PDF 積分的 MC 方法。但在這個問題上,我很好奇我們如何將這些方法用於其他問題。例如評估 10x2dx . 我選擇這個函數是因為分析評估積分是微不足道的;我只是好奇如何設計一個 MC 模擬來近似分析可以找到的值。

編輯@Periwinkle,我找到了下面的代碼片段(為了便於閱讀而對其進行了清理)並發佈在下面。

def mc_int(upper, lower, size, func):
 uniform_samples = np.random.uniform(low=lower, high=upper, size=size)
 transformed_samples = func(uniform_samples)
 expected_value = np.average(transformed_samples) * (upper - lower)
 return expected_value

def f(x):
 return x**2

mc_int(lower=0, upper=1, size=1000, func=f)
>>>
0.3333     

根據您的評論,我不明白為什麼upper - lower需要按比例縮放。你能解釋一下嗎?

n(x,y) , iid 均勻分佈在單位平方中。計算這些對中有多少滿足 y<x2 , 讓這個數為 k . 然後 P(Y<X2)=[0,1]2Iy<x2,d(x,y)=10x2,dxkn.

模擬人生

代碼:

xx <- seq(0,1,by=.01)
plot(xx,xx^2,type="l",lwd=3)

n_sims <- 1e4
set.seed(1)
sims <- cbind(runif(n_sims),runif(n_sims))
index <- sims[,2]<sims[,1]^2
points(sims,pch=19,cex=0.4,col=c("red","black")[index+1])

sum(index)/length(index)

這是一個關於近似的著名練習的變體 π (實際上 π4 ,通過在單位正方形中使用四分之一圓)。

引用自:https://stats.stackexchange.com/questions/547132