, RNG, , , "" . :
dyn.load('urand.so')
RNGkind("user", "user")
#> Received seed: 1844983443
set.seed(123)
#> Received seed: 303482705
runif(10)
#> [1] 0.42061954 0.77097033 0.14981063 0.27065365 0.77665767 0.96882090
#> [7] 0.49077135 0.08621131 0.52903479 0.90398294
set.seed(123)
#> Received seed: 303482705
runif(10)
#> [1] 0.42061954 0.77097033 0.14981063 0.27065365 0.77665767 0.96882090
#> [7] 0.49077135 0.08621131 0.52903479 0.90398294
( , urand.c, Rprintf R_ext/Print.h.)
: (?), : user_unif_init, user_unif_nseed user_unif_seedloc
void set_seed(int * seed_in) {
Rprintf("Received seed: %u\n", *seed_in);
seed = *seed_in;
}
:
dyn.load('urand.so')
RNGkind("user", "user")
set_seed <- function(seed) {
invisible(.C("set_seed", seed_in = as.integer(seed)))
}
set_seed(123)
#> Received seed: 123
runif(10)
#> [1] 0.00197801 0.61916849 0.34846373 0.04152509 0.09669026 0.29923760
#> [7] 0.04184693 0.32557942 0.44473242 0.22339845
set_seed(123)
#> Received seed: 123
runif(10)
#> [1] 0.00197801 0.61916849 0.34846373 0.04152509 0.09669026 0.29923760
#> [7] 0.04184693 0.32557942 0.44473242 0.22339845
2: https://svn.r-project.org/R/trunk/src/main/RNG.c:
static void RNG_Init(RNGtype kind, Int32 seed)
{
int j;
BM_norm_keep = 0.0; /* zap Box-Muller history */
/* Initial scrambling */
for(j = 0; j < 50; j++)
seed = (69069 * seed + 1);
[...]
50 LCG . , R , .