diff --git a/gtsam/base/WeightedSampler.h b/gtsam/base/WeightedSampler.h index 916f37033..7c343b098 100644 --- a/gtsam/base/WeightedSampler.h +++ b/gtsam/base/WeightedSampler.h @@ -45,8 +45,8 @@ class WeightedSampler { */ explicit WeightedSampler(Engine* engine) : engine_(engine) {} - std::vector sampleWithoutReplacement(size_t numSamples, - std::vector weights) { + std::vector sampleWithoutReplacement( + size_t numSamples, const std::vector& weights) { // Implementation adapted from code accompanying paper at // https://www.ethz.ch/content/dam/ethz/special-interest/baug/ivt/ivt-dam/vpl/reports/1101-1200/ab1141.pdf const size_t n = weights.size(); @@ -122,7 +122,7 @@ class WeightedSampler { "Reservoir empty before all elements have been filled"); } - *iret = reservoir.top().second; + *iret = reservoir.top().second - 1; reservoir.pop(); }