PIVX Core  5.6.99
P2P Digital Currency
Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | List of all members
FastRandomContext Class Reference

Fast randomness source. More...

#include <random.h>

Collaboration diagram for FastRandomContext:
[legend]

Public Types

typedef uint64_t result_type
 

Public Member Functions

 FastRandomContext (bool fDeterministic=false) noexcept
 
 FastRandomContext (const uint256 &seed) noexcept
 Initialize with explicit seed (only for testing) More...
 
 FastRandomContext (const FastRandomContext &)=delete
 
 FastRandomContext (FastRandomContext &&)=delete
 
FastRandomContextoperator= (const FastRandomContext &)=delete
 
FastRandomContextoperator= (FastRandomContext &&from) noexcept
 Move a FastRandomContext. More...
 
uint64_t rand64 () noexcept
 Generate a random 64-bit integer. More...
 
uint64_t randbits (int bits) noexcept
 Generate a random (bits)-bit integer. More...
 
uint64_t randrange (uint64_t range) noexcept
 Generate a random integer in the range [0..range). More...
 
std::vector< unsigned char > randbytes (size_t len)
 Generate random bytes. More...
 
uint16_t rand16 ()
 Generate a random 16-bit integer. More...
 
uint32_t rand32 () noexcept
 Generate a random 32-bit integer. More...
 
uint256 rand256 () noexcept
 generate a random uint256. More...
 
bool randbool () noexcept
 Generate a random boolean. More...
 
uint64_t operator() () noexcept
 

Static Public Member Functions

static constexpr uint64_t min ()
 
static constexpr uint64_t max ()
 

Private Member Functions

void RandomSeed ()
 
void FillByteBuffer ()
 
void FillBitBuffer ()
 

Private Attributes

bool requires_seed {false}
 
ChaCha20 rng
 
unsigned char bytebuf [64]
 
int bytebuf_size {0}
 
uint64_t bitbuf {0}
 
int bitbuf_size {0}
 

Detailed Description

Fast randomness source.

This is seeded once with secure random data, but is completely deterministic and does not gather more entropy after that.

This class is not thread-safe.

Definition at line 107 of file random.h.

Member Typedef Documentation

◆ result_type

Definition at line 200 of file random.h.

Constructor & Destructor Documentation

◆ FastRandomContext() [1/4]

FastRandomContext::FastRandomContext ( bool  fDeterministic = false)
explicitnoexcept

Definition at line 693 of file random.cpp.

Here is the call graph for this function:

◆ FastRandomContext() [2/4]

FastRandomContext::FastRandomContext ( const uint256 seed)
explicitnoexcept

Initialize with explicit seed (only for testing)

Definition at line 642 of file random.cpp.

◆ FastRandomContext() [3/4]

FastRandomContext::FastRandomContext ( const FastRandomContext )
delete

◆ FastRandomContext() [4/4]

FastRandomContext::FastRandomContext ( FastRandomContext &&  )
delete

Member Function Documentation

◆ FillBitBuffer()

void FastRandomContext::FillBitBuffer ( )
inlineprivate

Definition at line 129 of file random.h.

◆ FillByteBuffer()

void FastRandomContext::FillByteBuffer ( )
inlineprivate

Definition at line 120 of file random.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ max()

static constexpr uint64_t FastRandomContext::max ( )
inlinestaticconstexpr

Definition at line 202 of file random.h.

◆ min()

static constexpr uint64_t FastRandomContext::min ( )
inlinestaticconstexpr

Definition at line 201 of file random.h.

◆ operator()()

uint64_t FastRandomContext::operator() ( )
inlinenoexcept

Definition at line 203 of file random.h.

◆ operator=() [1/2]

FastRandomContext& FastRandomContext::operator= ( const FastRandomContext )
delete

◆ operator=() [2/2]

FastRandomContext & FastRandomContext::operator= ( FastRandomContext &&  from)
noexcept

Move a FastRandomContext.

If the original one is used again, it will be reseeded.

Definition at line 702 of file random.cpp.

◆ rand16()

uint16_t FastRandomContext::rand16 ( )
inline

Generate a random 16-bit integer.

Definition at line 188 of file random.h.

◆ rand256()

uint256 FastRandomContext::rand256 ( )
noexcept

generate a random uint256.

Definition at line 621 of file random.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ rand32()

uint32_t FastRandomContext::rand32 ( )
inlinenoexcept

Generate a random 32-bit integer.

Definition at line 191 of file random.h.

Here is the caller graph for this function:

◆ rand64()

uint64_t FastRandomContext::rand64 ( )
inlinenoexcept

Generate a random 64-bit integer.

Definition at line 150 of file random.h.

Here is the caller graph for this function:

◆ randbits()

uint64_t FastRandomContext::randbits ( int  bits)
inlinenoexcept

Generate a random (bits)-bit integer.

Definition at line 159 of file random.h.

Here is the caller graph for this function:

◆ randbool()

bool FastRandomContext::randbool ( )
inlinenoexcept

Generate a random boolean.

Definition at line 197 of file random.h.

Here is the caller graph for this function:

◆ randbytes()

std::vector< unsigned char > FastRandomContext::randbytes ( size_t  len)

Generate random bytes.

Definition at line 632 of file random.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ RandomSeed()

void FastRandomContext::RandomSeed ( )
private

Definition at line 614 of file random.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ randrange()

uint64_t FastRandomContext::randrange ( uint64_t  range)
inlinenoexcept

Generate a random integer in the range [0..range).

Definition at line 174 of file random.h.

Here is the caller graph for this function:

Member Data Documentation

◆ bitbuf

uint64_t FastRandomContext::bitbuf {0}
private

Definition at line 115 of file random.h.

◆ bitbuf_size

int FastRandomContext::bitbuf_size {0}
private

Definition at line 116 of file random.h.

◆ bytebuf

unsigned char FastRandomContext::bytebuf[64]
private

Definition at line 112 of file random.h.

◆ bytebuf_size

int FastRandomContext::bytebuf_size {0}
private

Definition at line 113 of file random.h.

◆ requires_seed

bool FastRandomContext::requires_seed {false}
private

Definition at line 109 of file random.h.

◆ rng

ChaCha20 FastRandomContext::rng
private

Definition at line 110 of file random.h.


The documentation for this class was generated from the following files: