【发布时间】:2017-08-25 05:37:22
【问题描述】:
我正在实现一个算法,作为其中的一部分,我需要生成指数随机变量。不幸的是,我无法真正避免循环,因为每个生成的随机变量都取决于前一个,所以我认为矢量化是不可能的。我围绕生成进行了一些计算,但瓶颈(目前)是生成。在这一点上,我假设 N 会很大(N >= 1,000,000)。
下面是一些示例代码:
N <- 1e7
#Preallocate
x <- rep(0, times=N)
#Set a starting seed
x[1] <- runif(1)
for(i in 2:N) {
#Do some calculations
x[i] <- x[i-1] + rexp(1, x[i-1]) #Bottleneck
#Do some more calculations
}
如何加快速度?我已经尝试在 Rcpp 中实现,但在这种情况下它似乎并没有做太多。是否有另一种聪明的方法可以绕过每次迭代中的 rexp() 调用?
【问题讨论】:
标签: r performance random rcpp