2017-03-23 16 views
3

Rコンソールを開くたびに、ランダムシードは同じ値に設定されます。私のコンピュータ(あなたのマシン上で同じかもしれない)で、rnorm(1)を実行すると、私はいつも最初の呼び出しで0.1777571を得ます。現在の時間にランダムシードを自動的に設定する方法は?

私は、自動的にファイル.Rprofile

set.seed(
    as.integer(
     as.numeric(
     gsub("[^0-9]","",paste(format(Sys.time(), "%Y %X %x"))) 
    )%%.Machine$integer.max 
    ) 
) 

のようなものを追加することによって、コンピュータの現在の時間を使ってランダムシードを設定しようとしましたが、それは何も変わりません。 rnorm(1)への最初の呼び出しは常に0.1777571を返します。

どのようにランダムシードをコンピュータの現在の時刻に自動的に設定できますか?

EDIT

私は、端末上で直接Rセッションを開きます。私はちょうどrをヒットし、明示的に以前のワークスペースをロードしません。 set.seedため

答えて

5

ドキュメントは面白い物事のカップルを言う:

最初は、種子はありません。現在の時刻である から新しい時刻が作成され、プロセスIDが必要な場合はプロセスIDが作成されます。したがって、異なるセッション は、デフォルトで異なるシミュレーション結果を提供します。ただし、以前に保存した ワークスペースが復元されている場合は、シード が以前のセッションから復元される可能性があります。

あなたが記述の行動は、あなたが.RProfileで持っているコードが実行されるた後、それがなければなりませんように思えるれ、前回のワークスペースがロードされたときに復元され.Random.seedの以前のバージョンと一致しています。

もう1つの興味深い点は、ドキュメントでは単にset.seed(NULL)を使用すると、少ない労力で必要なものを実行できることが示唆されているということです。ここで

がこれを論じRメーリングリストからのスレッドです:https://stat.ethz.ch/pipermail/r-help/2010-October/255734.html

+0

mmhhh ...まあ、私は明示的に任意のワークスペースをロードしません。私はちょうどターミナルウィンドウで新しいセッションを開くためにbashの 'r'を押しました。 –

+2

@ Remi.b以前に保存したワークスペースを明示的にロードする必要はなく、起動プロセスの一部としてロードされます。編集時に追加したリンクを参照してください。読み込んでいるワークスペースに可視オブジェクトがない場合、気付かないこともあります。隠された '.Random.seed'を復元していることを除いて –

+0

ありがとうございました。 Rを開いたときに ''以前に保存されたワークスペースが復元されました ''というメッセージが表示されていることがわかりました。ファイル '/ Users/remi/.RData'を削除し、問題は解決しました。 –

関連する問題