Lines Matching defs:range
61 * The prng_lg_range functions give a uniform int in the half-open range [0,
128 * in [0, range) instead of [0, 2**lg_range).
132 prng_range_u32(atomic_u32_t *state, uint32_t range, bool atomic) {
136 assert(range > 1);
138 /* Compute the ceiling of lg(range). */
139 lg_range = ffs_u32(pow2_ceil_u32(range)) - 1;
141 /* Generate a result in [0..range) via repeated trial. */
144 } while (ret >= range);
150 prng_range_u64(uint64_t *state, uint64_t range) {
154 assert(range > 1);
156 /* Compute the ceiling of lg(range). */
157 lg_range = ffs_u64(pow2_ceil_u64(range)) - 1;
159 /* Generate a result in [0..range) via repeated trial. */
162 } while (ret >= range);
168 prng_range_zu(atomic_zu_t *state, size_t range, bool atomic) {
172 assert(range > 1);
174 /* Compute the ceiling of lg(range). */
175 lg_range = ffs_u64(pow2_ceil_u64(range)) - 1;
177 /* Generate a result in [0..range) via repeated trial. */
180 } while (ret >= range);