Monte Carlo R 中的方法

Monte Carlo Method in R

我正在尝试学习 R。我正在尝试编写一个计算(近似)圆周率的程序。 Read About the method

我的代码现在无法运行!

f <- 0
s <- 0
range <- 10000
for (i in (1:range)) {
    v <- sample(1:range, 1)/range
    n <- sample(1:range, 1)/range

    if ( sqrt (v*v + n*n) <= 1) {
        f <- f + 1
    } else if ( v <=1 && n <= 1) {
        s <- s+1
    }
}

print ( f/s )

这是您的代码的改进版本[​​=19=]

range = 100000
v = runif(range)
n = runif(range)
f = sum(sqrt(v^2 + n^2) <= 1)

print(4 * f / range)

您应该使用 runif 从制服中获取样本而不是 sample(...) / range

s 是不必要的,因为您正在计算 f 的次数,您的随机点 (v,n) 在该象限的圆圈内,被分割按尝试抽奖的次数,在您的情况下就是 range

你需要乘以4,因为f / range近似于四分之一单位圆的面积。