运行 Monte Carlo R 中的模拟,并从中构建向量
Running a Monte Carlo simulation in R, and building a vector from it
我尝试编写的函数的目标是执行以下操作
- 在 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, 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
我尝试编写的函数的目标是执行以下操作
- 在 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, 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