每次打开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
并且没有显式加载任何以前的工作区。
答案 0 :(得分:5)
set.seed
的文档说了几件有趣的事情:
最初,没有种子;从当前创建一个新的 时间和进程ID,当需要时。因此不同的会议 默认情况下会给出不同的模拟结果。然而,种子 如果以前保存过,可能会从之前的会话中恢复 工作区已恢复。
您描述的行为与先前加载前一个工作区时恢复的.Random.seed
版本一致,这似乎必须是之后您在{ {1}}正在运行。
另一个有趣的事情是,文档表明只需使用.RProfile
即可完成所需的工作。
以下是来自R邮件列表的帖子,其中讨论了这个问题:https://stat.ethz.ch/pipermail/r-help/2010-October/255734.html