Generate a random integer in the range [0..range). * Precondition: range > 0. */
| 200 | * Precondition: range > 0. |
| 201 | */ |
| 202 | uint64_t randrange(uint64_t range) noexcept |
| 203 | { |
| 204 | assert(range); |
| 205 | --range; |
| 206 | int bits = CountBits(range); |
| 207 | while (true) { |
| 208 | uint64_t ret = randbits(bits); |
| 209 | if (ret <= range) return ret; |
| 210 | } |
| 211 | } |
| 212 | |
| 213 | /** Generate random bytes. */ |
| 214 | std::vector<unsigned char> randbytes(size_t len); |