用于高斯过程的准随机数生成器

quasi random number generator for gaussian process

本文关键字:随机数生成器 过程 高斯 用于      更新时间:2023-10-16

我正在尝试按照对数正态过程(即 X_t = X_(t-1) exp( drift * dt + sigma*GaussianRandom*sqrt(dt)))。我想使用准随机数来获得更快的收敛。

我的理解是我需要一个 1200 维准随机数生成器。在每个时间步长,我都使用X_t来计算其他一些变量,因此我需要所有 1200 个点,我不能跳到单个端点并降低维度。

我的问题是:

  1. 在如此高的维度下,使用准随机数与伪随机数相比,我会有任何优势。

  2. 有人可以指出我一些可以帮助我生成准随机数的C++代码。

在如此高的维度下,使用准随机数与伪随机数相比,我会有任何优势。

与好的伪随机数生成器相比,1200 不是一个高维度。你需要的是一个好的伪随机数生成器,这几乎排除了rand()

有人可以指出我一些可以帮助我生成准随机数的C++代码。

这个问题隐含地假设你不能使用 PRNG。你可以,只要它有一个很长的重复并且表现出非常好的行为。梅森捻线机将足以满足您的需求(但现在甚至有更好的需求)。MT有很多实现,但如果你可以使用C++11,MT是内置于语言中的。解决此问题的最简单方法是使用 C++11 随机数生成器。请参阅 http://en.cppreference.com/w/cpp/numeric/random 。

我不能回答你的第一个问题。

对于第二个:看看GNU科学库。代码是 C 语言的,结构良好,因此您可以轻松地编写包装类(如果需要)。

我会拿gsl_rng_mt19937或gsl_rng_ranlxd2并修改它们。我更喜欢gsl_rng_ranlxd2(如果计算时间不计量)。