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并没有显式加载任何以前的工作区.
文档set.seed说了几件有趣的事情:
最初,没有种子; 当需要时,从当前时间和进程ID创建一个新的.因此默认情况下,不同的会话将提供不同的模拟结果.但是,如果先前保存的工作空间已还原,则可能会从先前的会话中还原种子.
您描述的行为与.Random.seed加载前一个工作区时恢复的先前版本一致,这似乎必须在您.RProfile运行的代码之后.
另一个有趣的事情是,文档表明,只需使用set.seed(NULL)就可以用更少的工作做你想要的事情.
这是来自R邮件列表的一个帖子,讨论了这个:https://stat.ethz.ch/pipermail/r-help/2010-October/255734.html