使用特征向量中的权重从离散分布中抽取样本
Sample from discrete distribution using weights in Eigen Vector
我在 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,不自己写sampler,能做到吗?
您可以使用指针 Eigen::VectorXd
std::discrete_distribution<int> dist(weights.data(), weights.data()+weights.size());
我在 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,不自己写sampler,能做到吗?
您可以使用指针 Eigen::VectorXd
std::discrete_distribution<int> dist(weights.data(), weights.data()+weights.size());