Per una risposta a 2, vedere prima la pagina di guida ?RNGkind
.
per trovare il tipo di RNG in uso:
RNGkind()
# [1] "Mersenne-Twister" "Inversion"
Il Mersenne Twister è il valore predefinito.
Dalla pagina di aiuto:
‘ "Mersenne-Twister":’ Da Matsumoto e Nishimura (1998).A GFSR ritorto con periodo 2^19937-1 e equidistribuzione in 623 dimensioni consecutive (per l'intero periodo). Il "seme" è un insieme 624-dimensionale di numeri interi a 32 bit più una posizione corrente in tale serie.
Per trovare il seme corrente in uso, è necessario prima chiamare il generatore di numeri casuali.
runif(1, 0, 1)
# [1] 0.9834062
.Random.seed
# [Gives a 626 length vector]
Calling set.seed(some_integer)
seguito da .Random.seed
, darà sempre lo stesso vettore 626 di lunghezza, se si utilizza lo stesso some_integer
. Per dirla in modo diverso, il vettore di lunghezza 626 è determinato esclusivamente da some_integer
, dato che si sta utilizzando il Mersenne Twister, ovviamente.
Inoltre, ovviamente, l'esecuzione di set.seed
su un valore fisso fornirà gli stessi valori per le chiamate a routine di numeri casuali che lo seguono. Questo è l'uso principale in pratica, per dare riproducibilità. Per esempio.
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
Tutto il codice generatore di numeri di base in R è nel file src/main/RNG.c nel codice sorgente.
È in C, ma abbastanza facile da seguire.
1. Non penso sia necessario; 2. '? .Random.seed' (è un po 'più complicato di così, ma forse qualcun altro risponderà) –
Leggi' 'RNG' per ottenere la maggior parte delle tue risposte – Andrie