From c6d474b3fa0b47adbcff51219f5928855c3bb806 Mon Sep 17 00:00:00 2001 From: "bin.sun" Date: Wed, 29 Jan 2025 22:43:57 +0800 Subject: [PATCH] Fix: UniformIntGenerator range error (#7143) * Fix: UniformIntGenerator range error * Fix the UniformIntGenerator function description * Fix: change the validation check conform to std::uniform_int_distribution * apply style --------- Co-authored-by: Benjamin Ummenhofer --- cpp/open3d/utility/Random.h | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/cpp/open3d/utility/Random.h b/cpp/open3d/utility/Random.h index ffb5a4113a3..46566a2128c 100644 --- a/cpp/open3d/utility/Random.h +++ b/cpp/open3d/utility/Random.h @@ -43,7 +43,7 @@ std::mutex* GetMutex(); /// This function is automatically protected by the global random mutex. uint32_t RandUint32(); -/// Generate uniformly distributed random integers in [low, high). +/// Generate uniformly distributed random integers in [low, high]. /// This class is globally seeded by utility::random::Seed(). /// This class is a wrapper around std::uniform_int_distribution. /// @@ -54,7 +54,7 @@ uint32_t RandUint32(); /// // Globally seed Open3D. This will affect all random functions. /// utility::random::Seed(0); /// -/// // Generate a random int in [0, 100). +/// // Generate a random int in [0, 100]. /// utility::random::UniformIntGenerator gen(0, 100); /// for (size_t i = 0; i < 10; i++) { /// std::cout << gen() << std::endl; @@ -64,17 +64,18 @@ template class UniformIntGenerator { public: /// Generate uniformly distributed random integer from - /// [low, low + 1, ... high - 1]. + /// [low, low + 1, ... high]. /// /// \param low The lower bound (inclusive). - /// \param high The upper bound (exclusive). \p high must be > \p low. + /// \param high The upper bound (inclusive). \p high must be >= \p low. UniformIntGenerator(const T low, const T high) : distribution_(low, high) { if (low < 0) { utility::LogError("low must be > 0, but got {}.", low); } - if (low >= high) { - utility::LogError("low must be < high, but got low={} and high={}.", - low, high); + if (low > high) { + utility::LogError( + "low must be <= high, but got low={} and high={}.", low, + high); } }