c++ - 使用特征向量中的权重从离散分布中采样

标签 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 时,执行此操作的最佳方法是什么?可以在不复制 vector 和不自己编写采样器的情况下完成吗?

最佳答案

您可以使用Eigen::VectorXd的指针

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

关于c++ - 使用特征向量中的权重从离散分布中采样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38340905/

相关文章:

c++ - 我怎么能像 numpy 那样从 MxN 矩阵中减去 1xN 特征矩阵?

c++ - JsonCpp堆对象处理内存管理

c++ - 我怎样才能声明一个结构?

c++ - 同时与两个片段着色器发生碰撞

c# - .NET 中用于生成随机数的算法是什么?

c++ - cv::Mat 转换为特征矩阵并返回

c++ - 准确了解对象在内存中的映射方式

php - 在 PHP/Mysql 中生成随机数作为主键

matlab - 在 MATLAB 中置换矩阵的列

c++ - 将文件中的矩阵读入 Eigen mpfr 时出现段错误