如何解决在 R 中运行 Monte Carlo 模拟,并从中构建一个向量
我正在尝试编写的函数的目标是执行以下操作
- 随机选择一个介于 0 和 10 之间的数字
N
。 - 评估
eq(N) = P
。 - 在 0 和 1 之间随机生成一个数字
L
。 - 如果
L > P
,我们丢弃这个数字,否则,我们将P
添加到数字向量中。 - 重复此操作的次数等于
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,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,max=10)
P = eq(N)
L = runif(1,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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。