提升离散均匀分布

时间:2018-02-07 00:54:48

标签: c++ boost statistics uniform-distribution

我有各种各样的分布,我可以从中绘制样本,pdf和cdf。出于多态的原因,我使用的是uniform_distribution而不是uniform_int_distribution。

以下返回10到20之间的浮点值而不是整数值:

 typedef uniform_distribution<double,
                policy<discrete_quantile<integer_round_outwards>>> uniform_round_outwards;

 uniform_round_outwards  _uniformObject(10,20);

 x = quantile(_uniformObject, p); 

该政策是否适用?

1 个答案:

答案 0 :(得分:2)

  

出于多态原因,我使用uniform_distribution代替uniform_int_distribution

数学库没有uniform_int_distribution,这是一个奇怪的陈述。

  

以下返回10到20之间的浮点值而不是整数值:

该分布是连续分布。 The docs只是短暂地提到维基百科说“还有一个离散的统一分布。”但他们没有明确说明这样的事情是否得到实施。

查看来源显示该政策未被使用:

  template <class RealType, class Policy>
  inline RealType quantile(const uniform_distribution<RealType, Policy>& dist, const RealType& p)
  {
    RealType lower = dist.lower();
    RealType upper = dist.upper();
    RealType result = 0; // of checks
    if(false == detail::check_uniform("boost::math::quantile(const uniform_distribution<%1%>&, %1%)",lower, upper, &result, Policy()))
    {
      return result;
    }
    if(false == detail::check_probability("boost::math::quantile(const uniform_distribution<%1%>&, %1%)", p, &result, Policy()))
    {
      return result;
    }
    if(p == 0)
    {
      return lower;
    }
    if(p == 1)
    {
      return upper;
    }
    return p * (upper - lower) + lower;
  }

我的结论是,在这一类中没有实现离散均匀分布。