diff options
author | Arne Juul <arnej@verizonmedia.com> | 2020-06-10 11:43:32 +0000 |
---|---|---|
committer | Arne Juul <arnej@verizonmedia.com> | 2020-06-10 12:15:19 +0000 |
commit | 01628464c504010f133f48148ccfbcaa27ce9683 (patch) | |
tree | ca77a3bc477f1cb4aeda86c43f184a2dda96d500 /searchlib | |
parent | 5960e92dd2bc44ba62b11c9f160b4987d012d754 (diff) |
tighten guard holding
also:
* constify where possible
* use uniform_real_distribution to invert range for us
Diffstat (limited to 'searchlib')
-rw-r--r-- | searchlib/src/vespa/searchlib/tensor/inv_log_level_generator.h | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/searchlib/src/vespa/searchlib/tensor/inv_log_level_generator.h b/searchlib/src/vespa/searchlib/tensor/inv_log_level_generator.h index 624fba901e4..4a96a21534b 100644 --- a/searchlib/src/vespa/searchlib/tensor/inv_log_level_generator.h +++ b/searchlib/src/vespa/searchlib/tensor/inv_log_level_generator.h @@ -19,19 +19,23 @@ class InvLogLevelGenerator : public RandomLevelGenerator { std::mt19937_64 _rng; std::mutex _mutex; std::uniform_real_distribution<double> _uniform; - double _levelMultiplier; + const double _levelMultiplier; + + double get_uniform() { + std::lock_guard<std::mutex> guard(_mutex); + return _uniform(_rng); + } public: InvLogLevelGenerator(uint32_t m) : _rng(0x1234deadbeef5678uLL), _mutex(), - _uniform(0.0, 1.0), + _uniform(1.0, 0.0), _levelMultiplier(1.0 / log(1.0 * m)) {} uint32_t max_level() override { - std::lock_guard<std::mutex> guard(_mutex); - double unif = _uniform(_rng); - double r = -log(1.0-unif) * _levelMultiplier; + double unif = get_uniform(); + double r = -log(unif) * _levelMultiplier; return (uint32_t) r; } }; |