r - set.seed() 与 R 中的 .Random.seed 的意外行为?
问题描述
我偶然发现了这种意想不到的行为(对我而言),这可能是由于我对.Random.seed
.
set.seed(1234) # This is for reproducibility
s1 <- .Random.seed
set.seed(s1)
s2 <- .Random.seed
runif(1)
s3 <- .Random.seed
set.seed(s3)
s4 <- .Random.seed
all(s2==s4) # TRUE
我不明白的部分是最后一行。种子集如何“返回”到s2
,即返回到之前runif(1)
被调用的集合?
我知道这会.Random.seed
保存统一随机数生成器的种子集,但我的理解是我也可以将它用作set.seed()
函数的输入。
解决方案
您不能将整数向量.Random.seed
与set.seed
. 仅使用第一个整数。确实,你保存的RNG状态和调用的时候是一样的set.seed(403)
,是的第一个元素.Random.seed
。
如果您确定您有一个有效的种子向量,那么您可以将它分配给.Random.seed
. 但是,您可能最好使用rngtools::RNGseed()
,因为它至少会进行一些基本的错误检查:
set.seed(1234) # This is for reproducibility
s1 <- .Random.seed
runif(5)
.Random.seed <- s1
runif(5)
rngtools::RNGseed(s1)
runif(5)
推荐阅读
- javascript - d3中地图行为的基准数据差异
- php - Magento API 抛出 500 错误,说检查异常日志但什么都没有
- javascript - 在javascript中随机化for循环
- python - 如何使用if条件在python中的列标题和行值之间查找字符串匹配(部分匹配和完全匹配)
- git - 如何使用 git diff --no-index 仅显示 dir2 FROM dir1 中的增量丢失/更改
- javascript - cash-dom 检查是否选择了选项
- python - 无法将逗号分隔的整数和非整数值转换为在 Python 的系列列中浮动
- android - Dagger-Hilt @AndroidEntryPoint 不适用于 BottomSheetDialogFragment()
- java - 使用 Kotlin 从联系人列表中获取联系人信息
- node.js - 无法在 Docker 中连接到 mongo