Changeset View
Changeset View
Standalone View
Standalone View
src/random.h
| Show First 20 Lines • Show All 224 Lines • ▼ Show 20 Lines | uint64_t randrange(uint64_t range) noexcept { | ||||
| uint64_t ret = randbits(bits); | uint64_t ret = randbits(bits); | ||||
| if (ret <= range) { | if (ret <= range) { | ||||
| return ret; | return ret; | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| /** Generate random bytes. */ | /** Generate random bytes. */ | ||||
| template <typename B = uint8_t> std::vector<B> randbytes(size_t len); | template <typename B = uint8_t> std::vector<B> randbytes(size_t len) { | ||||
| std::vector<B> ret(len); | |||||
| fillrand(MakeWritableByteSpan(ret)); | |||||
| return ret; | |||||
| } | |||||
| /** Fill a byte Span with random bytes. */ | /** Fill a byte Span with random bytes. */ | ||||
| void fillrand(Span<std::byte> output); | void fillrand(Span<std::byte> output); | ||||
| /** Generate a random 32-bit integer. */ | /** Generate a random 32-bit integer. */ | ||||
| uint32_t rand32() noexcept { return randbits(32); } | uint32_t rand32() noexcept { return randbits(32); } | ||||
| /** generate a random uint160. */ | /** generate a random uint160. */ | ||||
| uint160 rand160() noexcept; | uint160 rand160() noexcept { | ||||
| uint160 ret; | |||||
| fillrand(MakeWritableByteSpan(ret)); | |||||
| return ret; | |||||
| } | |||||
| /** generate a random uint256. */ | /** generate a random uint256. */ | ||||
| uint256 rand256() noexcept; | uint256 rand256() noexcept { | ||||
| uint256 ret; | |||||
| fillrand(MakeWritableByteSpan(ret)); | |||||
| return ret; | |||||
| } | |||||
| /** Generate a random boolean. */ | /** Generate a random boolean. */ | ||||
| bool randbool() noexcept { return randbits(1); } | bool randbool() noexcept { return randbits(1); } | ||||
| /** Return the time point advanced by a uniform random duration. */ | /** Return the time point advanced by a uniform random duration. */ | ||||
| template <typename Tp> | template <typename Tp> | ||||
| Tp rand_uniform_delay(const Tp &time, typename Tp::duration range) { | Tp rand_uniform_delay(const Tp &time, typename Tp::duration range) { | ||||
| using Dur = typename Tp::duration; | using Dur = typename Tp::duration; | ||||
| ▲ Show 20 Lines • Show All 69 Lines • Show Last 20 Lines | |||||