如何使用 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<>
的正确方法是什么吗?
【问题讨论】:
【参考方案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'