我在Eigen::VectorXd
中有一组权重,并希望从索引范围中提取样本,这些值是概率。如果weights
是std::vector
,我可以这样做:
std::random_device rd;
std::mt19937 rng(rd());
std::discrete_distribution<int> dist(weights.begin(), weights.end());
int val = dist(rng);
weights
为Eigen::VectorXd
时,最好的方法是什么?可以在不复制矢量且不自己编写采样器的情况下完成吗?
答案 0 :(得分:1)
您可以使用指针Eigen::VectorXd
std::discrete_distribution<int> dist(weights.data(), weights.data()+weights.size());