看别人的package说明里的例子,第一行总是写这个“setseed()”,然后才产生随机数。我自己做模拟时从来不用这个东西。请问:用不用有什么区别?
回复 第1楼 的 alma2004: 用途是给定伪随机数的seed,在同样的seed下,R生成的伪随机数序列是相同的。这样的话,别人的模拟就是可以重复的。
回复 第2楼 的 安华·刹那:哦,但重复不是绝对的吧?难道seed确定,随机数序列就有确定的算法,有据可查?我理解不写seed的话是完全不可重复的,但写了就真的可重复了?
Together with ?RNGkind, you should be able reproduce the results by setting the seeds. For reproducibility under parallel running, it's slighly more complicated.
回复 第4楼 的 RemembeR discoveR, invent:嗯,就是太理论。其实我最关心的是你做模拟时会先设定种子吗?这到底是不是一种良好的编程习惯?
回复 第5楼 的 alma2004:Of course, yes. Reproducibility is the minimal requirement for any serious research work, not restricted to statistics/programming work.
回复 第5楼 的 alma2004:我来COS发的第一贴也是这个问题[s:19] 设定种子绝对是好习惯,好处多多。
回复 第6楼 的 RemembeR discoveR, invent:O(∩_∩)O谢谢
回复 第7楼 的 ming_uld:设定种子是相对严谨,但好处多多怎么体现呢?还有,对我有什么好处呢?我下面的理解对不对:比如我编的程序(比如估计利用某方法估计参数,最后得到的参数估计是基于重复100次后的平均)今天运行出结果,N天后我再运行此程序会得到相同的结果,因为设定了种子,不论产生什么分布的随机数,都完全可复制?
回复 第9楼 的 alma2004:可以重复得到同一组伪随机数很重要。比如,你的程序有一个很隐蔽的错误,导致你用某些初始值会得到错误的结果,如果你没有设定种子,运行完程序一看结果错了,这时你肯定想再用刚才的数据做一次debug,但永远不可能得到它了。再比如,写论文的时候,你的结果要给别人看,那么一个可重复使用的数据就很重要,你要让别人运行你的code也能得到你的结果就必须要设定种子,等等。
回复 第10楼 的 ming_uld:嗯嗯,一旦有错误,debug时能再现之前的,这个对找错的人是很有利。谢谢[s:13]
解释的很好,学习了!