From: Ali Saidi Date: Mon, 23 Aug 2010 16:18:39 +0000 (-0500) Subject: BASE: Fix genrand to generate both 0s and 1s when max equals one. X-Git-Tag: stable_2012_02_02~920 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7d191366e1b8c3efaf2a08b26483bca82c00e4de;p=gem5.git BASE: Fix genrand to generate both 0s and 1s when max equals one. previously was only generating 0s. --- diff --git a/src/base/random.cc b/src/base/random.cc index 7daa90b9c..457b0c98b 100644 --- a/src/base/random.cc +++ b/src/base/random.cc @@ -65,7 +65,9 @@ Random::~Random() uint32_t Random::genrand(uint32_t max) { - int log = ceilLog2(max); + if (max == 0) + return 0; + int log = ceilLog2(max) + 1; int shift = (sizeof(uint32_t) * 8 - log); uint32_t random; @@ -79,7 +81,9 @@ Random::genrand(uint32_t max) uint64_t Random::genrand(uint64_t max) { - int log = ceilLog2(max); + if (max == 0) + return 0; + int log = ceilLog2(max) + 1; int shift = (sizeof(uint64_t) * 8 - log); uint64_t random;