R语言【base】——.Random.seed(),RNGkind(),RNGversion(),set.seed():随机数生成器

这篇具有很好参考价值的文章主要介绍了R语言【base】——.Random.seed(),RNGkind(),RNGversion(),set.seed():随机数生成器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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个不同的位)。文章来源地址https://www.toymoban.com/news/detail-836887.html

到了这里,关于R语言【base】——.Random.seed(),RNGkind(),RNGversion(),set.seed():随机数生成器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python生成随机数的一个标准库-random

    Random库Python中用于生成随机数的一个标准库。计算机没有办法产生真正的随机数,但它可以产生伪随机数。 伪随机数是计算机按照一定的运算规则产生的一些数据,只不过这些数据表现为随机数的形式。计算机中采用梅森旋转算法生成为随机序列,序列中的每一个元素就是伪

    2023年04月26日
    浏览(36)
  • JavaSE基础(三)—— 程序流程控制、Random随机数

    目录 一、顺序结构 二、分支结构 1. if 1.1 if分支有三种格式​编辑 2. switch 2.1 if、switch分支各自适合做什么业务场景 3. switch的穿透性 三、循环结构  1. for 循环​编辑 2. while 循环 2.1 什么时候用for循环,什么时候用while循环 3. do-while循环 4. 三种循环的区别 5. 死循环 6

    2024年02月02日
    浏览(46)
  • 【JavaSE API 】生成随机数的2种方法:Random类和Math类的Random方法

    Random类和Math类的random方法都可以用来生成随机数 而Math类的random方法则是 基于系统时间 的伪随机数生成器,= 0.0 , 1.0的随机double值范围[0,1)。例如: double num1 = Math.random() * 5 + 4;//范围[4,9) Random类是 基于种子 的伪随机数生成器,有含参数和不含参数两种构造方式,不含参数的

    2024年02月07日
    浏览(47)
  • Java随机数之System/Random/SecureRandom详解

    本系列为:从零开始学Java,为千锋教育资深Java教学老师独家创作 致力于为大家讲解清晰Java学习相关知识点,含有丰富的代码案例及讲解。如果感觉对大家有帮助的话,可以【点个关注】持续追更~ 文末有本文重点总结!关于技术类问题,也欢迎大家和我们沟通交流! 我们在

    2024年02月06日
    浏览(54)
  • Python random模块(获取随机数)常用方法和使用例子

    嗨喽,大家好呀~这里是爱看美女的茜茜呐 random.random random.random()用于生成一个0到1的随机符点数: 0 = n 1.0 random.uniform random.uniform(a, b),用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限。 如果a b,则生成的随机数n: a = n = b。如果 a b, 则 b = n = a

    2024年01月24日
    浏览(55)
  • C++ 标准库随机数:std::default_random_engine

    库头文件 #include random  

    2024年02月08日
    浏览(41)
  • 【LINUX相关】生成随机数(srand、/dev/random 和 /dev/urandom )

    在一个循环中,生成多组随机值,发现最终的结果都一样,结果是调用的函数如下,在函数中设置了随机种子,且是以秒为单位,那么在一秒类,由于都是用一个种子,srand又是伪随机,所以最终生成的都是同一组随机字符。 2.1 修改种子 (1)将 srand(time(NULL)); 放到循环外面

    2024年02月12日
    浏览(40)
  • 【机器学习】随机种子Random Seed介绍(在Python、Pytorch、TensorFlow中的设置代码汇总)

    Random seed(随机种子) 是在生成随机数时使用的起始点。它用于控制随机数生成器产生随机数的序列。设置了随机种子后,每次生成的随机数序列将是确定性的,这意味着可以在不同的运行中获得相同的随机数序列,从而使实验可复现。 在机器学习中,确保实验的可复现性是

    2024年02月05日
    浏览(57)
  • Jmeter-BeanShell脚本中for循环里面使用random随机数函数,每次生成的都一样

    预想的是每次循环生成的随机数不一样,但实际使用Random函数生成的是重复的。 以下是部分原代码: 生成的updateList为: [{“id”:235214718648462,“dataId”:null,“data”:6708,“type”:“number”}, {“id”:318239582208002,“dataId”:333989510397954,“data”:6708,“type”:“number”}, {“id”:33398948

    2024年01月20日
    浏览(49)
  • 【Python】蒙特卡洛模拟 | PRNG 伪随机数发生器 | 马特赛特旋转算法 | LCG 线性同余算法 | Python Random 模块

          猛戳订阅!  👉 《一起玩蛇》🐍 💭 写在前面: 本篇博客将介绍经典的伪随机数生成算法,我们将  重点讲解 LCG(线性同余发生器) 算法与马特赛特旋转算法,在此基础上顺带介绍 Python 的 random 模块。   本篇博客还带有练习,无聊到喷水的练习,咳咳…… 学完前

    2024年02月04日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包