Выборка из дискретного распределения с использованием весов в собственном векторе

У меня есть набор весов в 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

Решение

Вы можете использовать указатели для Eigen::VectorXd

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]