使用特征向量中的权重从离散分布中取样

时间:2016-07-13 00:36:43

标签: c++ random eigen multinomial

我在Eigen::VectorXd中有一组权重,并希望从索引范围中提取样本,这些值是概率。如果weightsstd::vector,我可以这样做:

std::random_device rd;
std::mt19937 rng(rd());
std::discrete_distribution<int> dist(weights.begin(), weights.end());
int val = dist(rng);

weightsEigen::VectorXd时,最好的方法是什么?可以在不复制矢量且不自己编写采样器的情况下完成吗?

1 个答案:

答案 0 :(得分:1)

您可以使用指针Eigen::VectorXd

std::discrete_distribution<int> dist(weights.data(), weights.data()+weights.size());