我必须多次重复一些基于伪随机数的统计程序(大约100 000),这个程序是用纯R编写的。每一步(有10万步或称之为迭代)之后我想得到最新的随机生成器的状态(我认为种子是合适的),在这一步/迭代程序后,我只收集整个输出的一部分,因为它太大而无法存储(它的值是优化目标函数和其他一些统计数据)。在检查总输出(长度为100 000)之后,我想再次选择最佳解决方案并运行相应的程序,为此我需要设置对应于选择解决方案的随机发生器的状态。有set.seed
但获得种子并不是直截了当的,有.Random.seed
但是它如何帮助解决上述问题呢?
答案 0 :(得分:2)
在每次迭代开始时调用set.seed(x)
。确保您可以在开始此过程之前识别所使用的种子,以便以后可以使用它。例如:
for (seed in seeds) {
set.seed(i)
print(sprintf('using seed = %d\n', seed))
do_your_stuff(...)
}
在评论中你问:
如何以适当的方式选择种子 - 不应该是一些“随机”素数而不是简单的整数序列(如果我们谈论含有种子的载体)?
如果seeds
只是一个序列(如1:100
)或随机素数,我不确定这是多么重要。据我所知,任何种子编号X
都与其他Y
一样好。但是如果这对你很重要,那么你可以从某个地方获取素数列表(例如here)并使用sample
随机化它们,例如:
seeds <- sample(c(7, 17, 19, 23, 1019, 1021))