2012-07-19 19 views
6

オペレーティングシステム(OS)によってset.seedの結果が異なる場合があります。私はRのクラスで同様の状況に遭う前に覚えています。前の種子を同じ値に設定していたにもかかわらず、何人かがrnormを使って異なるランダムシーケンスを生成していた前です。 今、私は自分自身にコースを与えていて、rnormと同じ問題に遭遇していません。私の生徒はすべてOSにかかわらず同じシーケンスを取得します。興味深いことに、MASSパッケージのmvrnorm機能にも同じ問題があるようです。OS間の乱数生成が異なります

任意の洞察力をいただければ幸い - マルク

この例:R 2.14.1の私のWindows 7 OSの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 

収量:

> 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 

編集:誰かがこれらの結果を得ていないのか、どのOSやバージョンのRを使ったのかを知ることは役に立ちます。

+0

あなたはすべて同じバージョンのRおよび/または同じRNGkindを使用していましたか? – Dason

+0

@Dason - いいえ、そうは思わない。場合によっては、自分よりも新しいバージョンのRを持っていることがあります。しかし、私は、学生の間でさえ、彼らは異なる結果を得ており、OSは共通の分母のように思えたと思います。 –

+1

いいえ。 RはRNG自体を生成しますが、可能な違いは 'mvrnorm'を実行する場合に必要な行列分解であり、これはLAPACK/BLASライブラリに起因する可能性があります。あなたがシーケンシャルなベクトルだけを描くならば、私はあなたが同じ数字を得ることをかなり確信しています。 Rはこれらのことに注意を払う。 –

答えて

0

RNGKindを変更している人がいると聞いたことがあります。変更を行ったスクリプトやその他のスクリプトを変更したパッケージを読み込んで実行することがあります。そうであれば、同じ種子は異なる乱数につながるだろう。 Rの新しい実行(異なるパッケージや他のスクリプトをロードせずに)では、同じシードから同じ乱数が生成されるはずです。

+3

'.Random.seed'が以前に保存された作業領域から離れている場合に、Rセッションを開くときに' rm(list = ls(all.names = TRUE)) 'を実行することも可能です。 –