| 59 | } |
| 60 | |
| 61 | bool PartialSumSampling::Init(const vec_float_t& probs) { |
| 62 | partial_sum_table_.clear(); |
| 63 | partial_sum_table_.resize(probs.size()); |
| 64 | float_t sum = 0; |
| 65 | for (size_t i = 0; i < probs.size(); ++i) { |
| 66 | sum += probs[i]; |
| 67 | partial_sum_table_[i] = sum; |
| 68 | } |
| 69 | return sum != 0; |
| 70 | } |
| 71 | |
| 72 | std::unique_ptr<Sampling> NewPartialSumSampling(const vec_float_t* probs) { |
| 73 | return PartialSumSampling::Create(*probs); |