| 191 | } |
| 192 | |
| 193 | void ThreadUnsafeUnigramSampler::Update(ArraySlice<int64> values) { |
| 194 | int num_updates = std::min(static_cast<int>(values.size()), |
| 195 | kint32max - picker_.total_weight()); |
| 196 | for (int i = 0; i < num_updates; i++) { |
| 197 | const int64 value = values[i]; |
| 198 | picker_.set_weight(value, picker_.get_weight(value) + 1); |
| 199 | } |
| 200 | } |
| 201 | |
| 202 | // Thread-safe unigram sampler |
| 203 | UnigramSampler::UnigramSampler(int64 range) |