Answers:
这取决于您将如何运行代码或是否存在某种程度上是随机的代码,因为它会以随机方式绘制随机数。(这种情况的一个示例是我们的素食主义者软件包中的置换测试,在该置换测试中,我们仅继续置换,直到我们积累了足够的数据,才能知道结果是否不同于所陈述的Type I错误并考虑到Type II错误率。)不应该影响抽奖...
如果最终脚本只能作为批处理作业或全部运行,并且伪随机数生成器没有随机抽取,则可以在脚本顶部设置种子并完整运行它是安全的。
如果要单步执行代码(也许是重新运行代码块),则需要set.seed()
在每次从伪随机数生成器提取的函数调用之前进行调用。
对于我的科学论文,我通常会进行超级防御,并在每个代码块之前设置种子。这样可以在以后更新脚本,该脚本可能随时需要插入到现有脚本中,例如响应评论者或共同作者的评论。
希望您的结果不会取决于一组特定的pseduo随机值,因此问题在于能够重现报告或论文中所述的确切值。即使您可能超级防御并在每个代码块上设置了种子,您仍可能需要重新创建确切的安装-R版本和软件包版本,因此记录这些详细信息至关重要。为了更加安全,您需要保留特定项目/论文的先前R版本和软件包。确实,很多人都这样做。
R
工作,此状态都可以在中找到.Random.seed
。我最担心的R
是某些例程可能会绕过此过程,set.seed
在某些情况下可能会完全忽略。