6 #ifndef BITCOIN_RANDOM_H 7 #define BITCOIN_RANDOM_H 103 unsigned char bytebuf[64];
117 bytebuf_size =
sizeof(bytebuf);
143 if (bytebuf_size < 8) FillByteBuffer();
153 }
else if (bits > 32) {
154 return rand64() >> (64 - bits);
156 if (bitbuf_size < bits) FillBitBuffer();
171 if (ret <= range)
return ret;
176 std::vector<unsigned char> randbytes(
size_t len);
190 static constexpr
uint64_t max() {
return std::numeric_limits<uint64_t>::max(); }
204 template<
typename I,
typename R>
207 while (first != last) {
208 size_t j = rng.randrange(last - first);
211 swap(*first, *(first + j));
242 #endif // BITCOIN_RANDOM_H static const int NUM_OS_RANDOM_BYTES
Definition: random.h:222
def randbool(p=0.5)
Definition: gen_key_io_test_vectors.py:216
int GetRandInt(int nMax) noexcept
Definition: random.cpp:670
void FillByteBuffer()
Definition: random.h:111
int RandomSeed()
Definition: testharness.cc:67
static constexpr uint64_t min()
Definition: random.h:189
uint64_t bitbuf
Definition: random.h:106
static constexpr uint64_t max()
Definition: random.h:190
void FillBitBuffer()
Definition: random.h:120
bool Random_SanityCheck()
Definition: random.cpp:715
void RandAddSeedSleep()
Definition: random.cpp:661
Definition: chacha20.h:13
uint64_t randrange(uint64_t range) noexcept
Definition: random.h:165
uint64_t result_type
Definition: random.h:188
void GetStrongRandBytes(unsigned char *buf, int num) noexcept
Definition: random.cpp:660
unsigned int uint32_t
Definition: stdint.h:21
void RandomInit()
Definition: random.cpp:784
unsigned long long uint64_t
Definition: stdint.h:22
void Keystream(unsigned char *c, size_t bytes)
Definition: chacha20.cpp:74
uint32_t rand32() noexcept
Definition: random.h:179
static uint64_t CountBits(uint64_t x)
Definition: common.h:83
void GetRandBytes(unsigned char *buf, int num) noexcept
Definition: random.cpp:659
Definition: uint256.h:121
void Shuffle(I first, I last, R &&rng)
Definition: random.h:205
int bytebuf_size
Definition: random.h:104
ChaCha20 rng
Definition: random.h:101
bool requires_seed
Definition: random.h:100
uint256 GetRandHash() noexcept
Definition: random.cpp:675
void GetOSRand(unsigned char *ent32)
Definition: random.cpp:330
static uint64_t ReadLE64(const unsigned char *ptr)
Definition: common.h:31
int bitbuf_size
Definition: random.h:107
uint64_t randbits(int bits) noexcept
Definition: random.h:150
uint64_t operator()() noexcept
Definition: random.h:191
uint64_t GetRand(uint64_t nMax) noexcept
Definition: random.cpp:665