首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置"discrete_distribution“c++向量

如何设置"discrete_distribution“c++向量
EN

Stack Overflow用户
提问于 2017-12-28 20:13:04
回答 2查看 1.2K关注 0票数 5

我试图模拟类似马尔可夫链的东西,用discrete_distribution来模拟状态s_i到s_j的变化,但当然,这是一个矩阵,而不是向量。所以我试着。

代码语言:javascript
复制
std::vector <uint16_t> v {{...},
                          {...},
                           ...
                          {...},};

std::vector <std::discrete_distribution <uint16_t> > distr(n, std::distribution <uint16_t> (v.begin(), v.end()) );

但这不管用。

注意:如果我只尝试一个向量,这就是uint16_t works的向量。

代码语言:javascript
复制
// CHANGE v by v[0]
std::vector<std::discrete_distribution <uint64_t>> distr(1, std::discrete_distribution <uint64_t> (vecs[0].begin(), vecs[0].end()));

基于这个answer

我知道

代码语言:javascript
复制
std::vector <std::discrete_distribution <uint16_t> > distr(n, std::distribution <uint16_t> (v.begin(), v.end()) );

是不正确的,但我提到将v1改为v,以证明使用离散分布向量是可能的。

EN

回答 2

Stack Overflow用户

发布于 2017-12-28 20:21:38

可以使用列表初始化来初始化嵌套向量。例如:

代码语言:javascript
复制
std::vector<std::vector<int>> v{
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};
票数 5
EN

Stack Overflow用户

发布于 2018-02-12 06:16:16

我找到了一种类似于这个answer的方法

使用此模板

代码语言:javascript
复制
template<typename T>
void set_distributions(std::vector< std::discrete_distribution <T> > &distr,  const std::vector< std::vector<T> > &vecs){
  for (uint64_t i = 0; i < vecs.size(); ++i) {
    distr.push_back( std::discrete_distribution <uint64_t> (vecs[i].begin(), vecs[i].end()) );
  }

}

使用这个函数,当您清空了分布的向量时

代码语言:javascript
复制
std::vector<std::discrete_distribution <uint64_t>> distr;
  set_distributions(distr, vecs);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48013802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档