运行 Monte Carlo R 中的模拟,并从中构建向量

Running a Monte Carlo simulation in R, and building a vector from it

我尝试编写的函数的目标是执行以下操作

  1. 在 0 到 10 之间随机选择一个数字N
  2. 评价eq(N) = P
  3. 在 0 和 1 之间随机生成一个数字L
  4. 如果 L > P,我们丢弃这个数字,否则,我们将 P 添加到数字向量中。
  5. 重复此操作的次数等于 runs,我们函数的输入。

尝试 运行 neutronrejector 会导致几个错误:

Error: unexpected '=' in:
"  U <- U+1
  if(U ="
>   }
Error: unexpected '}' in "  }"
> }
Error: unexpected '}' in "}"

这些是错误信息。我的代码如下。谁能看看这个,看看我做错了什么?我完全不熟悉用R写函数,我更习惯使用预置包。

eq = function(x){x*(exp(-x/1.4))}

values <- c()
U <- 0


neutronrejector = function(runs){
  repeat{
  N = runif(1, min=0, max=10)
  P = eq(N)
  L = runif(100, min=0, max=1)  
  ifelse(L > P, , values = c(N, values))
  U = U+1
  if(U = runs) break
  }
}

谢谢!

一些更正:

  • 等式由 ==
  • 检验
  • 使用runif(1,min=0,max=1)得到一个随机数
  • if 语句而不是 ifelse
neutronrejector = function(runs){
  repeat{
    N = runif(1, min=0, max=10)
    P = eq(N)
    L = runif(1, min=0, max=1)  
    if (L > P) values = c(N, values)
    U = U+1
    if(U == runs) break
  }
  values
}

neutronrejector(10)
[1] 4.997457 7.699111 7.009196 5.515345 3.422422 9.495239 8.758963 2.209809 6.392655