我在 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
时,执行此操作的最佳方法是什么?可以在不复制 vector 和不自己编写采样器的情况下完成吗?
最佳答案
您可以使用Eigen::VectorXd
的指针
std::discrete_distribution<int> dist(weights.data(), weights.data()+weights.size());
关于c++ - 使用特征向量中的权重从离散分布中采样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38340905/