PRNG: Allow a a range argument of 1.
This is convenient when the range argument itself is generated from some computation whose value we don't know in advance.
This commit is contained in:
parent
bdb60a8053
commit
0513047170
@ -133,7 +133,9 @@ prng_range_u32(atomic_u32_t *state, uint32_t range, bool atomic) {
|
|||||||
uint32_t ret;
|
uint32_t ret;
|
||||||
unsigned lg_range;
|
unsigned lg_range;
|
||||||
|
|
||||||
assert(range > 1);
|
if (range == 1) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* Compute the ceiling of lg(range). */
|
/* Compute the ceiling of lg(range). */
|
||||||
lg_range = ffs_u32(pow2_ceil_u32(range));
|
lg_range = ffs_u32(pow2_ceil_u32(range));
|
||||||
@ -151,7 +153,9 @@ prng_range_u64(uint64_t *state, uint64_t range) {
|
|||||||
uint64_t ret;
|
uint64_t ret;
|
||||||
unsigned lg_range;
|
unsigned lg_range;
|
||||||
|
|
||||||
assert(range > 1);
|
if (range == 1) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* Compute the ceiling of lg(range). */
|
/* Compute the ceiling of lg(range). */
|
||||||
lg_range = ffs_u64(pow2_ceil_u64(range));
|
lg_range = ffs_u64(pow2_ceil_u64(range));
|
||||||
@ -169,7 +173,9 @@ prng_range_zu(atomic_zu_t *state, size_t range, bool atomic) {
|
|||||||
size_t ret;
|
size_t ret;
|
||||||
unsigned lg_range;
|
unsigned lg_range;
|
||||||
|
|
||||||
assert(range > 1);
|
if (range == 1) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* Compute the ceiling of lg(range). */
|
/* Compute the ceiling of lg(range). */
|
||||||
lg_range = ffs_u64(pow2_ceil_u64(range));
|
lg_range = ffs_u64(pow2_ceil_u64(range));
|
||||||
|
Loading…
Reference in New Issue
Block a user