diff options
author | Jacques Lucke <jacques@blender.org> | 2022-03-17 14:48:41 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2022-03-17 14:48:41 +0300 |
commit | d0968a9c52019b817c001562adbb875780d94786 (patch) | |
tree | 4f5548adcd757cb75443bde77b082487fbf81839 /source/blender/blenlib/intern/rand.cc | |
parent | 8f68cff01b85bfde18c9442e6a638eda181ee159 (diff) |
BLI: add probabilistic rounding utility
Diffstat (limited to 'source/blender/blenlib/intern/rand.cc')
-rw-r--r-- | source/blender/blenlib/intern/rand.cc | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/source/blender/blenlib/intern/rand.cc b/source/blender/blenlib/intern/rand.cc index 27774cad31b..17bf5585f3f 100644 --- a/source/blender/blenlib/intern/rand.cc +++ b/source/blender/blenlib/intern/rand.cc @@ -374,6 +374,15 @@ void RandomNumberGenerator::seed_random(uint32_t seed) this->seed(seed + hash[seed & 255]); } +int RandomNumberGenerator::round_probabilistic(float x) +{ + /* Support for negative values can be added when necessary. */ + BLI_assert(x >= 0.0f); + const float round_up_probability = fractf(x); + const bool round_up = round_up_probability > this->get_float(); + return (int)x + (int)round_up; +} + float2 RandomNumberGenerator::get_unit_float2() { float a = (float)(M_PI * 2.0) * this->get_float(); |