i<-0
t<-0
n<-10000000
while (i<=10000000){
x<-runif(1,-1,1)
y<-runif(1,-1,1)
if(sqrt((x^2+y^2))<=1){t<-t+1}
i<-i+1
}
t
options(digits = 10)
(t/n)*4
运行如下:

本文通过使用R语言中的while循环,生成大量(-1,1)范围内的随机点(x,y),计算并计数落在单位圆内的点数量,从而估算圆周率π的近似值,展示了蒙特卡洛方法的基本应用。
i<-0
t<-0
n<-10000000
while (i<=10000000){
x<-runif(1,-1,1)
y<-runif(1,-1,1)
if(sqrt((x^2+y^2))<=1){t<-t+1}
i<-i+1
}
t
options(digits = 10)
(t/n)*4
运行如下:

4376

被折叠的 条评论
为什么被折叠?
