2 の回答については、まずヘルプ ページを参照してください?RNGkind
。
使用中の RNG の種類を確認するには:
RNGkind()
# [1] "Mersenne-Twister" "Inversion"
Mersenne Twister がデフォルトです。
ヘルプページから:
'"Mersenne-Twister":' 松本・西村 (1998) より。周期 2^19937 - 1 のねじれた GFSR と 623 の連続した次元 (全周期にわたって) の等分布。「シード」は、32 ビット整数の 624 次元のセットと、そのセット内の現在の位置です。
現在使用されているシードを見つけるには、まず乱数ジェネレーターを呼び出す必要があります。
runif(1, 0, 1)
# [1] 0.9834062
.Random.seed
# [Gives a 626 length vector]
set.seed(some_integer)
を続けて呼び出す.Random.seed
と、同じ を使用すると、常に同じ長さの 626 ベクトルが得られますsome_integer
。別の言い方をすれば、626 の長さのベクトルはsome_integer
、もちろんメルセンヌ ツイスターを使用しているとすれば、 によってのみ決定されます。
また、もちろん、set.seed
ある固定値まで実行すると、それに続く乱数ルーチンの呼び出しでも同じ値が得られます。これは、再現性を与えるために、実際に主に使用されます。例えば
set.seed(1)
runif(5, 0, 1)
# [1] 0.2655087 0.3721239 0.5728534 0.9082078 0.2016819
rnorm(1, 0, 1)
# [1] 1.272429
set.seed(1)
runif(5, 0, 1)
# [1] 0.2655087 0.3721239 0.5728534 0.9082078 0.2016819
rnorm(1, 0, 1)
# [1] 1.272429
R の基本的なナンバ ジェネレータ コードはすべて、ソース コードのファイルsrc/main/RNG.cにあります。
これは C 言語ですが、従うのはかなり簡単です。