Package base version 4.2.0
Description
.Random.seed是一个整数向量,包含R中生成随机数的随机数生成器(RNG)状态。它可以保存和恢复,但不应该被用户更改。
RNGkind是一个更友好的接口,用于查询或设置正在使用的RNG类型。
RNGversion在早期的R版本中可以用来设置随机生成器(为了再现性)。
set.seed 是设置随机数种子的推荐方法。
Usage
.Random.seed <- c(rng.kind, n1, n2, ...)
RNGkind(kind = NULL, normal.kind = NULL, sample.kind = NULL)
RNGversion(vstr)
set.seed(seed, kind = NULL, normal.kind = NULL, sample.kind = NULL)
Arguments
参数【kind】:字符或NULL。如果kind是字符串,则将R的RNG设置为所需的类型。使用"default"返回R默认值。有关NULL的解释,请参阅“详细信息”。
参数【normal.kind】:字符串或NULL。如果是字符串,则设置为常见的构造器方式。使用"default"返回R默认值。NULL不做任何改变。
参数【sample.kind】:字符串或NULL。如果是字符串,则设置离散均匀生成方法(例如在sample中使用)。使用"default"返回R默认值。NULL不做任何改变。
参数【seed】:单个值,解释为整数或NULL(参见“详细信息”)。
参数【vstr】:包含版本号的字符串,例如“1.6.2”。如果vstr大于当前版本,则使用当前R版本的默认RNG配置。
参数【rng.kind】:上面kind的整数码为0:k。
参数【n1,n2,...】:整数。请参阅所需数量的详细信息(这取决于ring .kind)。
Details
目前可用的RNG种类如下。Kind部分匹配此列表。默认是“Mersenne-Twister”。
- "Wichmann-Hill"
- "Marsaglia-Multicarry"
- "Super-Duper"
- "Mersenne-Twister"
- "Knuth-TAOCP-2002"
- "Knuth-TAOCP"
- "L'Ecuyer-CMRG"
- "user-supplied"
normal.kind可为“Kinderman-Ramage”、“Buggy Kinderman-Ramage”(不适用set.seed)、“Ahrens-Dieter”、“Box-Muller”、“Inversion”(默认)或“user-supplied”。在1.7.0之前的版本中使用的Kinderman-Ramage生成器(现在称为“Buggy”)有几个近似错误,应该只用于复制旧结果。
“Box-Muller”生成器是有状态的,因为法线对是依次生成和返回的。当它被选中时(即使它是当前的普通生成器),当类型被改变时,状态将被重置。
sample.kind可以是“Rounding”或“Rejection”,或部分匹配这些。前者在3.6.0之前的版本中是默认的:它使样本在大种群中明显不均匀,并且应该只用于复制旧的结果。
set.seed使用单个整数参数来设置所需的任意数量的种子。它的目的是作为一种简单的方法,通过指定小的整数参数来获得完全不同的种子,也是一种为更复杂的方法(特别是“Mersenne-Twister”和“Knuth-TAOCP”)获得有效种子集的方法。我们不能保证不同的seed值会以不同的方式生成RNG,尽管任何例外情况都是非常罕见的。如果使用seed = NULL调用,它会重新初始化(参见' Note '),就好像没有设置种子一样。
使用kind = NULL,normal.kind = NULL或在RNGkind或set.seed中,sample.kind = NULL选择当前使用的生成器(如果工作空间已经恢复,包括在前一个会话中使用的生成器):如果没有使用生成器,它选择“default”。
Value
.Random.seed是一个整数向量,其第一个元素编码RNG和normal生成器的类型。最小的两位十进制数字为0 (k-1),其中k为可用rng数。百位代表普通发生器的类型(从0开始),万位代表离散均匀采样器的类型。
在底层的C中,.Random.seed[-1]是无符号的;因此在R .Random.seed[-1]可以是负数,因为用有符号整数表示无符号整数。
RNGkind返回在调用之前选择的RNG,正常和样本类型的三元素字符向量,如果参数不为NULL,则不可见。一个类型作为默认值启动会话,并通过调用RNGkind或通过设置. random来选择。在工作空间中播种。(注意:在r3.6.0之前,前两种类型以双元素字符向量的形式返回。)
RNGversion返回与RNGkind相同的关于特定R版本默认值的信息。
set.seed返回NULL,不可见。
Note
最初,没有种子;当需要时,将根据当前时间和进程ID创建一个新的。因此,默认情况下,不同的会话将给出不同的模拟结果。但是,如果恢复以前保存的工作空间,则可能会从以前的会话恢复种子。
.Random.seed保存用于均匀随机数生成器的种子集,至少用于系统生成器。它并不一定保存其他生成器的状态,特别是不保存Box-Muller正常生成器的状态。如果稍后要重现工作,请调用set.seed(最好为kind和normal.kind设置明确的值),而不是设置 . Random.seed。
.Random.seed对象只在用户的工作空间中查找。
不要依赖rng低阶位的随机性。大多数提供的统一生成器返回32位整数值,这些值被转换为双精度,因此它们最多取一个2的32次方个不同的值和长时间运行将返回重复的值(wichman - hill是例外,它们都给出至少30个不同的位)。