【问题标题】:How to use boost distribution functions? How about bisection?如何使用升压分配功能?对分呢?
【发布时间】:2011-11-22 18:43:20
【问题描述】:

我很难理解如何在 boost 中使用二项式和正态(高斯)分布。我需要从这些函数中获取单个值。我确定我目前可能正在错误地尝试使用这些功能,但这是我目前所拥有的:

#include <boost/math/distributions.hpp>
#include <boost/math/tools/roots.hpp>
#include <boost/random/variate_generator.hpp>
#include <boost/random.hpp>

//valueH is assigned before
int value;
/* Should this assign value to "value" ?*/
value = boost::math::binomial_distribution<> value(1,valueH);

正态分布为

normal norm;

double someValue = boost::math::pdf(norm, (value1*value2+value3)/(value1*sqrt(value2)));

或者我应该在这里使用 boost::math::normal_distribution 还是它是如何工作的?我已经阅读了 boost 文档,但我仍然不知道如何从分布中分配值。我也读过 C++ TR1: how to use the normal_distribution? 所以我是否需要使用一些随机数生成器并生成链接显示的数字,这是否允许我为变量分配单个值?

如果这条信息有点混乱,我很抱歉,但无论如何谢谢!

好的,到目前为止,我已经理解了二项式并让它工作,现在我需要让正态分布工作......参考上面的链接,我的情况与我只需要一个值但我想调用 normal有值的分布。就像“给我 N(0.1) 和数字 2 左右。

好吧,我认为这变得越来越容易,但似乎不是我想使用提升二等分函数Bisection 但问题是有时我只有函数,最小值和最大值,而二等分函数至少需要 4 arguments 第 4 个参数是 Tol tol.. 这是某种公差,但如果我想找到一个绝对值,或者我需要用 3 个参数编写自己的二等分,我可以将它分配给 0 吗?

【问题讨论】:

  • Boost documentation中有完整的例子。
  • 是的,但是让我们进行二项式翻转(翻转,成功分数); “翻转”是否包括通话后的值,还是我必须以某种方式从翻转中提取二项式值?
  • 一旦创建,flip 就是一个代表分布的对象。您可以对其执行任何您想要的操作——参见示例。
  • 哦,对了,这似乎奏效了。我对如何使用它有完全错误的想法,谢谢大卫!无论如何,现在我有一个不同的问题。我需要形成一个矩阵并使用二项分布生成随机数。我找不到获取数字 B(n,p) 的函数?我假设我可以通过使用随机数生成器作为“mt19937”来解决随机数问题,并在每次创建新值之前播种它?
  • 是的,但不要每次都播种。只需播种一次。

标签: c++ boost


【解决方案1】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-23
    • 1970-01-01
    • 2014-09-15
    • 2021-11-16
    相关资源
    最近更新 更多