C ++ fast log-normal cdf approximation

时间:2015-11-13 16:33:39

标签: c++ cdf

在C ++中,我想创建一个函数,它将数字向量作为输入并输出CDF值的向量。以下是我的尝试:

#include <boost/math/distributions/lognormal.hpp>

vector<double> lognormCDF(vector<double>& input, double sigma)
{
    vector<double> output(input.size());
    boost::math::lognormal lognormDistr(0, sigma);

    for (size_t i = 0; i != input.size(); ++i)
    {
        output[i] = boost::math::cdf(lognormDistr, input[i]);
    }

    return output;
}

以上代码有效,但我需要它更快。

以下是有关如何使用该功能的一些背景信息:

  • 输入向量未排序且始终为正。
  • 输入向量通常为250到500个元素。
  • 西格玛值可以是0.14至1.4
  • CDF输出将在0.000001至0.999999
  • 范围内
  • CDF输出只需精确到最接近的0.000001

我只是想知道是否有更快的方法来实现上述目标?

我也想知道我是否对输入向量进行排序,是否有更快的方法来计算对数正态CDF输出向量?

0 个答案:

没有答案