r语言 - 随机数生成功能不起作用



第一个函数运行良好,生成随机数:

n <-10
inv.f <- array(0, dim=c(n ,1))
for(i in 1:n){ 
u <- runif(1,0,1) 
gexp.cdf <- function(x,beta=5.5){ (1-exp(-beta*x))-u } 
inv.f[i,] <-  uniroot(gexp.cdf, lower=0, upper=5,extendInt="yes")$root
}
inv.f

第二个函数不起作用;它没有生成随机数。

RN <- function(n){
inv.f <- array(0, dim=c(n ,1))
for(i in 1:n){ 
u <- runif(1,0,1) 
gexp.cdf <- function(x,beta=5.5){ (1-exp(-beta*x))-u } 
inv.f[i,] <-  uniroot(gexp.cdf, lower=0, upper=5,extendInt="yes")$root
}
}
RN(5)

问题是 R 中的函数返回函数中执行的最后一个表达式的值。在当前版本中,这将是循环中评估的最后一个元素。这个解决方案(添加return(inv.f)作为函数中的最后一个语句(对我有用:

RN <- function(n){
inv.f <- array(0, dim=c(n ,1))
for (i in 1:n){ 
u <- runif(1,0,1) 
gexp.cdf <- function(x,beta=5.5){ (1-exp(-beta*x))-u } 
inv.f[i,] <-  uniroot(gexp.cdf, lower=0, upper=5,extendInt="yes")$root
}
return(inv.f)
}

例:

set.seed(101)
RN(3)
##             [,1]
## [1,] 0.084651167
## [2,] 0.008147968
## [3,] 0.224888903

最新更新