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

How to automatically set the random seed on current time?

每次打开 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) 总是 return 0.1777571.

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

编辑

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

set.seed 的文档说了一些有趣的事情:

Initially, there is no seed; a new one is created from the current time and the process ID when one is required. Hence different sessions will give different simulation results, by default. However, the seed might be restored from a previous session if a previously saved workspace is restored.

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

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

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