【发布时间】:2016-02-21 17:13:06
【问题描述】:
采取以下bad伪随机数生成器(PRNG)randu的实现:
n = 100000
randu = matrix(NA, ncol=3, nrow=n)
new_z = 1
for(i in 1:n) {
new_x = (65539*new_z) %% 2^31
new_y = (65539*new_x) %% 2^31
new_z = (65539*new_y) %% 2^31
randu[i,] = c(x=new_x/2^31, y=new_y/2^31,z=new_z/2^31)
}
我想替换 for 循环。这里的问题是,在每个迭代步骤中生成的整行条目对于后续迭代步骤是必需的。我的想法是应用一个函数来填充空矩阵的行。因此,我正在尝试熟悉 apply 函数,而我已经走到了这一步:
n = 100000
randu = matrix(NA, ncol=3, nrow=n)
randu[1,3] <- 1 # seed
randu.fct <- function() {
randu[,1] <- (65539 * randu[,3]) %% 2 ^ 31
randu[,2] <- (65539 * randu[,1]) %% 2 ^ 31
randu[,3] <- (65539 * randu[,2]) %% 2 ^ 31
}
apply(randu[,1:3],1,randu.fct)
..这不是很多。我无法理解如何迭代一行的每个元素以及如何生成例如100000 行。
【问题讨论】:
标签: r