gpt4 book ai didi

r - set.seed(123) 使用多少次

转载 作者:行者123 更新时间:2023-12-04 14:46:12 24 4
gpt4 key购买 nike

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

最佳答案

这实际上取决于您如何预见 future 代码的变化。

如果您希望在需要生成随机数的代码中更早的位置包含命令,并且您希望在插入该代码之前复制之前获得的结果,您应该使用 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

在上面,如果我希望“C”无论前面是什么都始终相同,我应该在此之前设置种子。

请注意,由于我在创建 C 之前没有重置种子或 CC ,还有一个新函数需要在 BB 之间生成随机数。和 CC在第二个示例中, C 的值和 CC现在不同了。如果您希望它们相同,则必须插入另一个 set.seed就在创建之前 CCC , 如下:
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

关于r - set.seed(123) 使用多少次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18696331/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com