1 ~ n までの整数乱数を発生する sample 関数を使うとき,第1引数はベクトルを指定しない方が速い。
system.time({
set.seed(1)
a = sample(1:1e8, 1e5, replace=TRUE)
})
system.time({
set.seed(1)
b = sample(1e8, 1e5, replace=TRUE)
})
all(a == b)
実行結果
> system.time({
+ set.seed(1)
+ a = sample(1:1e8, 1e5, replace=TRUE)
+ })
ユーザ システム 経過
0.111 0.092 0.201
>
> system.time({
+ set.seed(1)
+ b = sample(1e8, 1e5, replace=TRUE)
+ })
ユーザ システム 経過
0.001 0.000 0.001
>
> all(a == b)
[1] TRUE
なぜそうなのかは,sample のソースを見ればわかる。