如何在当前时间自动设置随机种子?
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
每次打开 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