如何使用 std::vector 初始化 boost::random::discrete_distribution?

Posted

技术标签:

【中文标题】如何使用 std::vector 初始化 boost::random::discrete_distribution?【英文标题】:How to initialize boost::random::discrete_distribution using std::vector? 【发布时间】:2011-10-26 14:28:17 【问题描述】:

我想用std::vector<double> 初始化boost::random::discrete_distribution

我的问题是,如果我用一个数组来初始化它,就像官方的例子:

double probabilities[] = 
    0.5, 0.1, 0.1, 0.1, 0.1, 0.1
;
boost::random::discrete_distribution<> dist(probabilities);

然后它完美地工作。

但是,如果我用 std::vector 对其进行初始化,那么它的行为就像它只有一个概率为 1.0 的元素。

你能告诉我用向量初始化boost::random::discrete_distribution&lt;&gt; 的正确方法是什么吗?

【问题讨论】:

【参考方案1】:

该类似乎有一个构造函数takes an iterator range。这将与这样的向量一起使用:

std::vector<double> probs = ...;
boost::random::discrete_distribution<> dist(probs.begin(), probs.end());

【讨论】:

你知道如何解决这个问题吗? [链接](***.com/questions/48013802/…) 几乎相同,但有一个分布向量。

以上是关于如何使用 std::vector 初始化 boost::random::discrete_distribution?的主要内容,如果未能解决你的问题,请参考以下文章

如何初始化std :: vector的静态constexpr成员 在c ++ 11中?

如何在初始化中将 'std::vector<double>' 转换为 'double'

如何避免 std::vector<> 初始化其所有元素?

如何访问 std::vector 类型的成员

使用初始化列表作为值时插入 std::list<std::vector<int>> 失败?

如何初始化动态对象数组