Random 适用于Metropolis–;黑斯廷斯MCMC

Random 适用于Metropolis–;黑斯廷斯MCMC,random,montecarlo,Random,Montecarlo,我正在做很多大都会黑斯廷斯马尔可夫链蒙特卡罗(MCMC)。 我使用的大多数代码都使用Mersenne Twister(MT)作为伪随机数生成器(PRNG) 然而,我最近读到,MT已经过时,可能不应该再使用了,因为它通过了一些测试,而且速度相对较慢。所以我愿意换一个 Numpy现在默认为PCG(),它声称是好的。其他网站相当关键。例如。 似乎每个人都称赞自己的工作 这里已经有一些很好的信息: 但许多答案已经有点过时了,我想把我的问题表述得更具体一点 正如我所说:主要用例是Metropolis Ha

我正在做很多大都会黑斯廷斯马尔可夫链蒙特卡罗(MCMC)。 我使用的大多数代码都使用Mersenne Twister(MT)作为伪随机数生成器(PRNG)

然而,我最近读到,MT已经过时,可能不应该再使用了,因为它通过了一些测试,而且速度相对较慢。所以我愿意换一个

Numpy现在默认为PCG(),它声称是好的。其他网站相当关键。例如。 似乎每个人都称赞自己的工作

这里已经有一些很好的信息: 但许多答案已经有点过时了,我想把我的问题表述得更具体一点

正如我所说:主要用例是Metropolis Hastings MCMC。 因此,我需要:

  • 半开区间和开区间的均匀分布数
  • 大约2^50个样本,显然根据经验法则,PRNG的周期至少应为2^128
  • 足够质量的随机数(无论这意味着什么)
  • 合理的快速PRNG(对于固定运行时,更快的代码意味着MCMC更精确)
我不需要

  • 密码安全

因为我决不是专家,可用性当然也很重要。因此,我欢迎一个可用的C++实现(这似乎是标准的),这对于新手来说是很容易使用的。然而,你的问题并不适合这个网站,因为它是基于意见的,并寻求软件推荐。你需要跳转、前进和类似的功能吗?正如Peter O.所说,意见会有所不同。我建议尝试几个候选者,看看哪一个最适合您的用例。从numpy提供的发电机中,我知道Philox是一种高质量的发电机,通常比Mersenne捻线机的速度更快,并且具有出色的跳跃(向前跳)性能(因为它是基于计数器的)。@SeverinAppadeux目前我不需要这些功能。当然,未来的事情从来都不是一个坏主意。我不知道这是一个如此固执己见的问题。我希望有一个合理的选择。对不起,如果你问错地方了。试着做点什么,看看效果如何,其实并不可行。检查它是否有效是一项非常重要的任务,我无法完成。