повысить дискретное равномерное распределение

У меня есть множество дистрибутивов, из которых я рисую образцы, pdf и cdf. По полиморфным причинам я используюiform_distribution вместоiform_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

Решение

По полиморфным причинам я использую uniform_distribution вместо uniform_int_distribution,

Библиотека Math не имеет uniform_int_distribution, делая это странное заявление.

Следующее возвращает мне плавающее значение от 10 до 20 вместо целых значений:

Это распределение является непрерывным распределением. Документы только мимолетно ссылаются на Википедию, чтобы сказать: «Существует также дискретное равномерное распределение», но они не могут явно указать, реализована ли такая вещь или нет.

Изучение источника показывает, что политика не используется:

  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;
}

Мой вывод заключается в том, что дискретное равномерное распределение не реализовано в этом классе.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]