在伪随机数生成中设置种子的参考和最佳实践


11

这份与“设置种子”命令有关的文档中,Stata员工讨论了在生成伪随机数时与种子设置有关的问题。

一个显着的“不”是“不连续使用自然数作为种子的顺序,因为这有一个模式,危害伪随机性”。

一个四分之一的开玩笑的“做”在您的一生中只设置一个种子,然后在每个实验结束时记录所生成过程的“状态”,以便下一个实验在该点继续进行该进程已停止的位置。

显然,以上建议取决于一个人在其研究生命中将产生的伪随机数的预期数目。也许梅森捻线机可以满足许多研究人员的终生需求。

现在,我对PRNG的理论或实践经验并不丰富,因此我无法争论这些建议- 应该从理论基础和严格的数学统计证明它们是有效的还是无效的。

所以,我的问题是

1)您能否帮助解释或使以上给出的建议无效,或指向涉及此类问题的参考?

2)您可以提供提供“最佳做法”的参考资料吗?

3)您如何在自己的工作中进行这项工作,为什么?

作为问题3)的示例,假设对于Monte Carlo研究,您想要生成样本,每个样本的大小为,并且的周期足够大于。您会使用一个种子生成所有伪随机数,还是习惯每个样本更改种子?(但这仅是示例-我认为这里更一般的答案是值得的)。 ñ液化天然气ññ

一个相关的线程(尽管更加集中)是
在每个代码块之前还是每个项目一次设置种子?

我觉得这也许应该是社区Wiki,请对此做出决定。


4
该Stata手册页对为什么要使用种子进行了重要的隐式假设。我使用种子的主要原因(在CV的我的文章中)是创建可复制的示例。为了证明在示例达到我的喜好(!)之前,我还没有摆弄种子,我(几乎)总是使用相同的种子。这显然与Stata的建议相矛盾,因为我的目的与他们必须想到的目的不同(未声明)。这里的道义是最佳实践取决于目的。
ub

@whuber我的感觉是,我提到的文档中给出的建议旨在保留所使用系列的“随机性” 和可重复性(通过记录过程的“状态”,正如他们所说)。无论研究的目的是什么,这些目的似乎都值得在任何设置中追求,不是吗?
Alecos Papadopoulos 2014年

1
当然,它们是值得的-但这并不能证明如手册页所述将它们分为确定的“要做”和“不要做”。这样的uncategorical的问题格言是别人-比如律师-将导致认为,任何相反的做法本质上是错误的,无论目的或情况。在统计实践中留出判断的空间很重要!特别是,请不要混淆使用“最佳实践”软件的建议。
ub

@whuber事实上,我将链接到特定软件的文档用作“刺激”,但这并不使我对“使用软件的建议”产生疑问。所提出的问题显然与研究人员在进行统计研究中所使用的政策有关,因此在这里我不会感到困惑。
Alecos Papadopoulos 2014年

3
假设您的PRNG很好,为什么用模式设置种子会有所不同,这不是PRNG的重点吗?
Purple51 2014年

Answers:


3

就其价值而言,这是基于经验而非数学分析:

我认为除非您使用密码学,否则微妙的模式可能非常糟糕,只要您使用像Mersenne Twister这样的公认的良好PRNG,而不是像线性同余生成器那样的老式PRNG,设置的种子就不会有什么不同。据我所知,在没有实际运行PRNG的情况下,您无法分辨出给定种子会产生什么随机数(假设它是一个不错的方法),否则您将采用该新算法并将用作您的算法随机数生成器。

另一种观点:您认为蒙特卡洛模拟中的任何细微模式的幅度都可能大于其他建模假设所带来的所有测量误差,混淆和误差吗?

为了重现性,我将只在开始时使用一个随机种子,而不在每次调用前都设置一个随机种子,除非我正在进行调试,在调试中我需要确保两种不同的算法对于完全相同的输入数据产生相同的结果。

免责声明:如果您模拟核反应堆或导弹控制系统或天气预报,最好咨询领域专家,在这种情况下,我不承担任何责任。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.