如何在当前时间自动设置随机种子?

时间:2017-03-23 17:11:20

标签: r random random-seed

每次打开R控制台时,随机种子都会设置为相同的值。在我的计算机上(在您的计算机上可能是相同的),如果我运行rnorm(1),我会在第一次通话时获得0.1777571

我尝试使用计算机当前时间通过添加类似

的内容自动设置随机种子
set.seed(
   as.integer(
      as.numeric(
         gsub("[^0-9]","",paste(format(Sys.time(), "%Y %X %x")))
      )%%.Machine$integer.max
   )
)
文件.Rprofile中的

但它不会改变任何内容。第一次调用rnorm(1)始终返回0.1777571

如何自动将随机种子设置为计算机当前时间?

修改

我直接在终端上打开R会话。我只是点击r并且没有显式加载任何以前的工作区。

1 个答案:

答案 0 :(得分:5)

set.seed的文档说了几件有趣的事情:

  

最初,没有种子;从当前创建一个新的   时间和进程ID,当需要时。因此不同的会议   默认情况下会给出不同的模拟结果。然而,种子   如果以前保存过,可能会从之前的会话中恢复   工作区已恢复。

您描述的行为与先前加载前一个工作区时恢复的.Random.seed版本一致,这似乎必须是之后您在{ {1}}正在运行。

另一个有趣的事情是,文档表明只需使用.RProfile即可完成所需的工作。

以下是来自R邮件列表的帖子,其中讨论了这个问题:https://stat.ethz.ch/pipermail/r-help/2010-October/255734.html