2012-07-19 79 views
6

有没有人有任何经验的情况下,set.seed根据操作系统(OS)给出不同的结果。我记得在一个R类的类中出现类似的情况,之前有些人使用rnorm生成不同的随机序列,尽管将起始种子设置为相同的值。 现在,我正在亲自授课,并没有遇到同样的问题,不管操作系统如何,我的所有学生都会得到相同的序列有趣的是,MASS包的mvrnorm函数似乎也存在同样的问题。不同的随机数生成操作系统

任何有识之士将不胜感激 - 马克

这个例子:R上2.14.1:

> df 
      a  b 
1 8.318573 7.448164 
2 9.309468 5.719628 
3 14.676125 5.801543 
4 10.211525 5.221365 
5 10.387863 3.888318 
6 15.145195 8.573826 
7 11.382749 5.995701 
8 6.204816 1.066766 
9 7.939441 6.402712 
10 8.663014 4.054417 
> C 
     a  b 
a 8.187336 3.431373 
b 3.431373 4.310385 
> M 
       a  b 
[1,] 13.270535 6.158603 
[2,] 10.375011 5.737871 
[3,] 13.514105 5.476411 
[4,] 12.681956 5.020646 
[5,] 12.352333 4.927746 
[6,] 15.177508 6.810387 
[7,] 8.114377 2.925225 
[8,] 9.529744 4.834451 
[9,] 12.903550 7.232715 
[10,] 6.251907 3.481789 

我的Windows 7操作系统的64位版本

require(MASS) 
set.seed(123) 
a <- rnorm(10, mean=10, sd=3) 
b <- rnorm(10, mean=5, sd=2) 
df <- data.frame(a,b) 
C <- cov(df) 
M <- mvrnorm(n=10, c(10,5), C) 

df 
C 
M 

产量编辑:知道是否有人没有得到这些结果以及使用哪种操作系统或R版本可能会有帮助。

+0

您是否都使用相同版本的R和/或相同的RNGkind? – Dason 2012-07-19 19:10:03

+0

@Dason - 不,我不这么认为。在某些情况下,他们可能拥有比我更新的R版本。但我认为,即使在学生之间,他们也得到了不同的结果,操作系统似乎是一个可能的共同点。 – 2012-07-19 19:13:40

+1

没有它没有。 R生成RNG本身,唯一可能的区别可能是需要进行矩阵分解,如果你使用'mvrnorm' - 这可能是由于LAPACK/BLAS库引起的。如果你只画顺序矢量,我很肯定你会得到相同的数字。 R关注这些事情。 – 2012-07-19 19:27:46

回答

0

我听说有人在改变RNGKind,有时候并没有意识到它是通过加载和运行一个改变生成器或其他改变脚本的包来实现的。如果是这种情况,那么相同的种子会导致不同的随机数。 R的全新运行(不加载不同的包或其他脚本)应该从相同的种子生成相同的随机数。

+3

也可以在打开R会话时运行'rm(list = ls(all.names = TRUE))',以防''.Random.seed'在先前保存的工作空间中闲置。 – 2012-07-19 19:40:54