使用set.seed函数生成可重现的结果

时间:2018-10-16 02:30:59

标签: r

如果要生成50个可重现的样本,应该以第一方式还是第二方式使用set.seed函数?

set.seed(1000)
for(i in 1:50)
  sample(x,10)

for(i in 1:50)
  set.seed(1000)
  sample(x,10)

2 个答案:

答案 0 :(得分:0)

第一种方式

第一个为循环中使用的一串伪随机数设置起点。

第二种方法在循环的每次运行中设置相同的起点,并将给出相同的数字,从而得出相同的结果1:50倍。

say set.seed(1000)给出一组随机数(1,2,3,4,5 ...,50)

然后在第一个示例中,您将获得一个对应于1,2,3 ....,50

的样本。

但是在第二个示例中,您将获得一个对应于1,1,1 ....,1

的样本

答案 1 :(得分:0)

如果您同时运行所有行,则第一种方法将起作用。如果您第二次运行循环而没有将种子重置为1000,或者在设置种子和采样之间还有另一个随机事件,那么您将获得不同的答案。

第二种方法不起作用,因为它将返回相同的样本集50次。

对于可重现的样本,我将以这种方式进行(我将样本数设置为x,等于10)

x=10
for(i in 1:50){
  set.seed(i)
  print(sample(x,10))
}

这将为您提供50个不同的样本集,这些样本集在您下次运行代码时也将完全相同