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

Rem*_*i.b 3 random r 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
   )
)
Run Code Online (Sandbox Code Playgroud)

在文件中,.Rprofile但它不会改变任何东西.第一次打电话rnorm(1)总是回来0.1777571.

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

编辑

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

Joh*_*man 5

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

最初,没有种子; 当需要时,从当前时间和进程ID创建一个新的.因此默认情况下,不同的会话将提供不同的模拟结果.但是,如果先前保存的工作空间已还原,则可能会从先前的会话中还原种子.

您描述的行为与.Random.seed加载前一个工作区时恢复的先前版本一致,这似乎必须.RProfile运行的代码之后.

另一个有趣的事情是,文档表明,只需使用set.seed(NULL)就可以用更少的工作做你想要的事情.

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

  • @ Remi.b您不需要显式加载以前保存的工作区,它将作为启动过程的一部分加载.查看我在编辑时添加的链接.如果您正在加载的工作区没有可见对象,则可能甚至没有注意到它 - 除了它正在恢复隐藏的`.Random.seed`. (2认同)