.随机种子是一个整数向量,包含R中用于生成随机数的随机数生成器(RNG)状态。它可以保存和还原,但用户不应更改。
.Random.seed
RNGkind(kind = NULL, normal.kind = NULL, sample.kind = NULL)
RNGversion(vstr)
set.seed(seed, kind = NULL, normal.kind = NULL, sample.kind = NULL)
kind : 字符或空。如果kind是characterstring,则将R的RNG设置为所需的种类。使用“default”返回R默认值。有关NULL的解释,请参见“详细信息”。
normal.kind : 字符串或NULL。如果是字符串,则设置正常生成的方法。使用“default”返回R默认值。NULL不作任何更改。
sample.kind : 字符串或NULL。如果是characterstring,则设置离散统一生成的方法(例如在sample中使用)。使用“default”返回R默认值。NULL不作任何更改。
seed : 单个值,解释为整数或NULL(请参阅“详细信息”)。
vstr : 包含版本号的字符串,例如“1.6.2”。如果vstr大于当前版本,则使用当前版本的默认RNG配置。
rng.kind : 0:k中的整数代码表示上述类型。
n1, n2, ... : 整数。请参阅详细信息了解需要多少(具体取决于rng.kind公司).
require(stats)
## Seed the current RNG, i.e., set the RNG status
set.seed(42); u1 < - runif(30)
set.seed(42); u2 < - runif(30) # the same because of identical RNG status:
stopifnot(identical(u1, u2))
## the default random seed is 626 integers, so only print a few
runif(1); .Random.seed[1:6]; runif(1); .Random.seed[1:6]
## If there is no seed, a "random" new one is created:
rm(.Random.seed); runif(1); .Random.seed[1:6]
ok < - RNGkind()
RNGkind("Wich") # (partial string matching on 'kind')
## This shows how 'runif(.)' works for Wichmann-Hill,
## using only R functions:
p.WH < - c(30269, 30307, 30323)
a.WH < - c( 171, 172, 170)
next.WHseed < - function(i.seed = .Random.seed[-1])
{ (a.WH * i.seed) %% p.WH }
my.runif1 < - function(i.seed = .Random.seed)
{ ns < - next.WHseed(i.seed[-1]); sum(ns / p.WH) %% 1 }
set.seed(1998-12-04)# (when the next lines were added to the souRce)
rs < - .Random.seed
(WHs < - next.WHseed(rs[-1]))
u < - runif(1)
stopifnot(
next.WHseed(rs[-1]) == .Random.seed[-1],
all.equal(u, my.runif1(rs))
)
## ----
.Random.seed
RNGkind("Super") # matches "Super-Duper"
RNGkind()
.Random.seed # new, corresponding to Super-Duper
## Reset:
RNGkind(ok[1])
RNGversion(getRversion()) # the default version for this R version
## ----
sum(duplicated(runif(1e6))) # around 110 for default generator
## and we would expect about almost sure duplicates beyond about
qbirthday(1 - 1e-6, classes = 2e9) # 235,000