💉🈯[set.seed()|生信基础]set.seed()的解析

问题来源于一位师妹:

image.png

所以,提到set.seed(),你得知道一下内容

  • 1.程序生成的随机数是伪随机
  • 2.set.seed()是用于产生随机数的,你的程序涉及到了模拟或仿真的算法。括号里的数只是一个编号而已,例如set.seed(100)不应将括号里的数字理解成“一百”,而是应该理解成“编号为一零零的随机数发生”,下一次再模拟可以采用二零零(200)或者一一一(111)等不同的编号即可,编号设定基本可以随意
  • 3 .set.seed()函数目的为了保证你随机生成的随机数前后一致,相同seed编号两次随机的结果是一样的
  • 4.在许多涉及到模拟仿真的R包,通常都会set.seed,目的是让你的随机结果和他的一致,让相应的结果复现
  • 5.不set.seed(),每次随机出来的随机数都不一样

为了理解这个,你可以在R里面运行下方代码

set.seed(1)
x=rnorm(10)
plot(x)

set.seed(1)
x=rnorm(10)
plot(x)

-->两次运行出来的图是一样的

set.seed(2)
x=rnorm(10)
plot(x)

-->图就变了

所以你不set.seed,你每次随机出来的结果不一样

Q:但是我现在就想问,set.seed()里面填多少比较合适?
A:你看着给
Q:我看着给?
A:set.seed()是用于产生随机数的,一定是你的程序涉及到了模拟或仿真的算法。括号里的数只是一个编号而已,例如set.seed(100)不应将括号里的数字理解成“一百”,而是应该理解成“编号为一零零的随机数发生”,下一次再模拟可以采用二零零(200)或者一一一(111)等不同的编号即可,编号设定基本可以随意。
A:设定随机数种子,一个特定的种子可以产生一个特定的伪随机序列,这个函数的主要目的,是让你的模拟能够可重复出现,因为很多时候我们需要取随机数,但这段代码再跑一次的时候,结果就不一样了,如果需要重复出现同样的模拟结果的话,就可以用set.seed()。在调试程序或者做展示的时候,结果的可重复性是很重要的,所以随机数种子也就很有必要。
Q:那随便写了

参考资料
https://bbs.pinggu.org/thread-2598963-1-1.html
http://www.itdaan.com/blog/2017/11/27/d4a1940635a112330bfc2dd1089d2fcf.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,145评论 6 13
  • 个人学习批处理的初衷来源于实际工作;在某个迭代版本有个BS(安卓手游模拟器)大需求,从而在测试过程中就重复涉及到...
    Luckykailiu阅读 4,779评论 0 11
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,440评论 0 5
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,905评论 0 38
  • 33年了,混混沌沌,不知所谓,想做什么,该做什么,为什么做?都不知道…… 可笑的人们,可笑的人生,可笑的自己,一切...
    老谢1100阅读 605评论 0 0