This package contains a set of functions for working with Random Number Generators (RNGs). In particular, it defines a generic S4 framework for getting/setting the current RNG, or RNG data that are embedded into objects for reproducibility.
Notably, convenient default methods greatly facilitate the way current RNG settings can be changed.
showRNG()# RNG kind: Mersenne-Twister / Inversion # RNG state: 403L, 624L, ..., -1896522223L [eacb7c1288e03421d428feb736099548]s <- getRNG()RNGstr(s)[1] "403L, 624L, ..., -1896522223L [eacb7c1288e03421d428feb736099548]"RNGtype(s)[1] "Mersenne-Twister" "Inversion"# get what would be the RNG seed after set.seeds <- nextRNG(1234)showRNG(s)# RNG kind: Mersenne-Twister / Inversion # RNG state: 403L, 624L, ..., -1896522223L [eacb7c1288e03421d428feb736099548]showRNG( nextRNG(1234, ndraw=10) )# RNG kind: Mersenne-Twister / Inversion # RNG state: 403L, 10L, ..., 467264024L [b9a4fab9a7ad828dbffae696eef6a31a]# change of RNG kindshowRNG()# RNG kind: Mersenne-Twister / Inversion # RNG state: 403L, 624L, ..., -1896522223L [eacb7c1288e03421d428feb736099548]k <- RNGkind()k[2L] <- 'Ahrens'try( RNGkind(k) )setRNG(k)showRNG()# RNG kind: Mersenne-Twister / Ahrens-Dieter # RNG state: 103L, 624L, ..., -912150329L [c96e855238c32059d90ca179f9b1b16a]# set encoded kindsetRNG(501L)showRNG()# RNG kind: Marsaglia-Multicarry / Kinderman-Ramage # RNG state: 501L, 1613611859L, 1155293435L# use as set seedsetRNG(1234)showRNG()# RNG kind: Marsaglia-Multicarry / Kinderman-Ramage # RNG state: 501L, -305777535L, -1394370482Lr <- getRNG()# extract embedded RNG specificationsrunif(10)[1] 0.02611692 0.29453091 0.31486926 0.41448683 0.88493737 0.33931239 0.43921381 0.30835479 0.62447131 0.05536673setRNG(list(1, rng=1234))rng.equal(r)[1] TRUE# restore default RNG (e.g., after errors)RNGrecovery()showRNG()# RNG kind: Mersenne-Twister / Inversion # RNG state: 403L, 624L, ..., -325092206L [6b9b92cc9debdb741d96ff4ef849aa33]