DRY: Implement GetRand using FastRandomContext::randrange

This commit is contained in:
Pieter Wuille 2019-01-04 02:00:44 -08:00
parent a1f252eda8
commit 152146e782

View file

@ -503,17 +503,7 @@ void RandAddSeedSleep() { ProcRand(nullptr, 0, RNGLevel::SLEEP); }
uint64_t GetRand(uint64_t nMax) noexcept
{
if (nMax == 0)
return 0;
// The range of the random source must be a multiple of the modulus
// to give every possible output value an equal possibility
uint64_t nRange = (std::numeric_limits<uint64_t>::max() / nMax) * nMax;
uint64_t nRand = 0;
do {
GetRandBytes((unsigned char*)&nRand, sizeof(nRand));
} while (nRand >= nRange);
return (nRand % nMax);
return FastRandomContext().randrange(nMax);
}
int GetRandInt(int nMax) noexcept