现在我对这个策略有些怀疑:
如果我使用几个生成器,则生成器之间的数字的独立性(随机性)取决于种子(相同的种子相同的数字).因为我使用时间(ns)作为种子,并且因为这个时间改变了,但是我想知道仅使用一个奇异发生器并且例如是否更好.使其成为单身人士.这会增加随机数质量吗?
编辑:不幸的是,c 11还不是一个选项
编辑:更具体一点:我并不是说单身人士可以提高随机数质量,而是只使用一个发电机并播种.否则,我必须确保不同发电机的种子是独立的(随机的).
极端的例子:我种下两个具有完全相同数字的发电机 – >他们之间没有随机性
我的方法是使用单个PRNG生成器作为一组N个自包含PRNG实例的种子生成器.后面这些PRNG的每个实例都提供一个变量.通过自包含,我的意思是PRNG是一个对象,状态在实例成员而不是静态成员或全局变量中维护.种子发生器甚至不需要与其他N个PRNG来自同一家族.在多个线程同时尝试使用种子生成器的情况下,它只需要是可重入的.但是,在我的使用中,我发现最好在线程开始之前设置PRNG,以保证可重复性.这是一次运行,一次执行.蒙特卡罗技术通常需要数千次执行,可能更多,甚至更多.使用蒙特卡罗,重复性至关重要.因此需要另一个随机种子生成器.这个种子生成用于生成变量的N个生成器的种子生成器.
重复性很重要,至少在蒙特卡洛世界中如此.假设长蒙特卡罗模拟的运行编号10234导致一些大的故障.很高兴看到世界上发生了什么.这可能是一个统计侥幸,它可能是一个问题.问题在于,在典型的MC设置中,仅记录最少的数据,足以用于计算统计数据.要查看运行编号10234中发生的情况,需要重复该特定情况,但现在记录所有内容.
总结以上是内存溢出为你收集整理的c – 随机数发生器:它应该用作单身吗?全部内容,希望文章能够帮你解决c – 随机数发生器:它应该用作单身吗?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)