我正在通过命令行从命令行运行脚本R CMD BATCH script.in.R script.out.R &
我有以下行,它选择 12 个随机行 ID 并对它们进行排序:

test.index<-sort(sample(1:nrow(recoded),12))

如果我不更改脚本,它每次都会吐出相同的 12 个数字。如果我稍微改变一下(改变标签或字符串或任何东西),那么数字就会不同......我每次都需要它们不同!

有任何想法吗?

最佳答案

这听起来很奇怪。脚本的其余部分在做什么?如果它调用(或它调用的其他函数) set.seed ,那可以解释一些事情,但是既然你说改变(我假设的)数据,这意味着种子被设置为你的数据集的一些哈希?!或者如果您以任何方式更改脚本?

无论如何,您可以在调用 rm(.Random.seed, envir=globalenv()) 之前插入像 sample 这样的一行,它应该将种子重置为随机的...

另一种方法是自己生成一个独特的种子。这是一种基于时间和进程 ID 的方法。

 set.seed( as.integer((as.double(Sys.time())*1000+Sys.getpid()) %% 2^31) )

关于r - 每次都是相同的随机数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8810338/

10-12 17:05