BASE: Fix genrand to generate both 0s and 1s when max equals one.
previously was only generating 0s.
This commit is contained in:
parent
7793773809
commit
7d191366e1
1 changed files with 6 additions and 2 deletions
|
@ -65,7 +65,9 @@ Random::~Random()
|
||||||
uint32_t
|
uint32_t
|
||||||
Random::genrand(uint32_t max)
|
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);
|
int shift = (sizeof(uint32_t) * 8 - log);
|
||||||
uint32_t random;
|
uint32_t random;
|
||||||
|
|
||||||
|
@ -79,7 +81,9 @@ Random::genrand(uint32_t max)
|
||||||
uint64_t
|
uint64_t
|
||||||
Random::genrand(uint64_t max)
|
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);
|
int shift = (sizeof(uint64_t) * 8 - log);
|
||||||
uint64_t random;
|
uint64_t random;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue