Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用set.seed(123)的次数_R - Fatal编程技术网

R 使用set.seed(123)的次数

R 使用set.seed(123)的次数,r,R,我有60行代码。在整个代码中,有几个对随机数生成器的调用,包括rnorm()。在代码的最开始处放置set.seed(x)就足够了吗?还是每次在代码中生成随机数时我都需要设置.seed?这取决于您对未来代码变化的预测 如果希望在代码中的较早点包含需要生成随机数的命令,并且希望在插入该代码之前复制先前获得的结果,则应在代码中的适当点使用set.seed() 例如: set.seed(1) A <- rnorm(10) B <- rnorm(10) C <- rnorm(10) ##

我有60行代码。在整个代码中,有几个对随机数生成器的调用,包括
rnorm()
。在代码的最开始处放置
set.seed(x)
就足够了吗?还是每次在代码中生成随机数时我都需要设置.seed?

这取决于您对未来代码变化的预测

如果希望在代码中的较早点包含需要生成随机数的命令,并且希望在插入该代码之前复制先前获得的结果,则应在代码中的适当点使用
set.seed()

例如:

set.seed(1)
A <- rnorm(10)
B <- rnorm(10)
C <- rnorm(10) ## I always want "C" to be the results I get here

set.seed(1)
AA <- rnorm(10); BB <- rnorm(10); CC <- rnorm(10)

identical(A, AA)
# [1] TRUE
identical(B, BB)
# [1] TRUE
identical(C, CC)
# [1] TRUE

set.seed(1)
A <- rnorm(10); B <- rnorm(10); C <- rnorm(10)

set.seed(1)
AA <- rnorm(10); BB <- rnorm(10); BA <- rnorm(10); CC <- rnorm(10)

identical(A, AA)
# [1] TRUE
identical(B, BB)
# [1] TRUE
identical(C, CC)
# [1] FALSE

@用户1984076是的。查看
set.seed(1);runif(4);runif(4)
然后
set.seed(1);运行if(8)
。但是如果我在CC之前设置seed,那么它将与AA相同,对吗?使用
set.seed(X)
您将始终获得从(虚拟)索引1开始的相同数字序列。使用下一个set.seed和相同的X,您只需重置位置。见本
set.seed(1);A=rnorm(20);结实。种子(1);B=c(rnorm(10)、rnorm(5)、rnorm(5));相同(A,B)比较
相同(C,CC)
失败,因为序列中的一些随机数已被BA使用。@TomasGreif,是的,完全正确。摘要:在大多数情况下,在特定脚本中只需要一次。如果我想以后将脚本分解成更小的脚本,并且我希望脚本的每一部分都可以作为独立脚本复制,我有时会不止一次地包含它。另请参见:@AriB.Friedman,谢谢您的链接。
set.seed(1)
A <- rnorm(10)
B <- rnorm(10)
set.seed(2)
C <- rnorm(10) ## I always want "C" to be the results I get here

set.seed(1)
AA <- rnorm(10); BB <- rnorm(10); BA <- rnorm(10);
set.seed(2)
CC <- rnorm(10)

identical(A, AA)
# [1] TRUE
identical(B, BB)
# [1] TRUE
identical(C, CC)
# [1] TRUE