39

R を使用して、モンテカルロ プロセスでエージェント ベースのモデルを構築しています。これは、ある種のランダム エンジンを使用する多くの関数を取得したことを意味します。再現可能な結果を​​得るには、シードを修正する必要があります。しかし、私が理解している限り、すべてのランダム ドローまたはサンプルの前にシードを設定する必要があります。これは首の本当の痛みです。種子を固定する方法はありますか?

set.seed(123)
print(sample(1:10,3))
# [1] 3 8 4
print(sample(1:10,3))
# [1]  9 10  1
set.seed(123)
print(sample(1:10,3))
# [1] 3 8 4
4

6 に答える 6

9

ランダムなプロセスから常に同じ結果を返したい場合は、次のようにシードを常に設定しておくだけです。

addTaskCallback(function(...) {set.seed(123);TRUE})

これで、出力は毎回同じになります。

print(sample(1:10,3))
# [1] 3 8 4
print(sample(1:10,3))
# [1] 3 8 4
于 2019-09-18T09:50:38.567 に答える
3

必要なし。結果はサンプルごとに異なりますが (ほぼ確実にそれが必要です。それ以外の場合、ランダム性は非常に疑わしいものになります)、実行ごとの結果は同じになります。ほら、これが私のマシンからの出力です。

> set.seed(123)
> sample(1:10,3)
[1] 3 8 4
> sample(1:10,3)
[1]  9 10  1
于 2013-12-17T02:21:55.483 に答える