PRCYCoin  2.0.0.7rc1
P2P Digital Currency
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 Member Functions

 FastRandomContext (bool fDeterministic=false)
 
 FastRandomContext (const uint256 &seed)
 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 ()
 Generate a random 64-bit integer. More...
 
uint64_t randbits (int bits)
 Generate a random (bits)-bit integer. More...
 
uint64_t randrange (uint64_t range)
 Generate a random integer in the range [0..range). More...
 
std::vector< unsigned char > randbytes (size_t len)
 Generate random bytes. More...
 
uint32_t rand32 ()
 Generate a random 32-bit integer. More...
 
uint256 rand256 ()
 generate a random uint256. More...
 
bool randbool ()
 Generate a random boolean. More...
 

Private Member Functions

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

Private Attributes

bool requires_seed
 
ChaCha20 rng
 
unsigned char bytebuf [64]
 
int bytebuf_size
 
uint64_t bitbuf
 
int bitbuf_size
 

Detailed Description

Fast randomness source.

This is seeded once with secure random data, but is completely deterministic and insecure after that. This class is not thread-safe.

Definition at line 44 of file random.h.

Constructor & Destructor Documentation

◆ FastRandomContext() [1/4]

FastRandomContext::FastRandomContext ( bool  fDeterministic = false)
explicit

Definition at line 455 of file random.cpp.

Here is the call graph for this function:

◆ FastRandomContext() [2/4]

FastRandomContext::FastRandomContext ( const uint256 seed)
explicit

Initialize with explicit seed (only for testing)

Definition at line 406 of file random.cpp.

Here is the call graph for this function:

◆ 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 66 of file random.h.

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

◆ FillByteBuffer()

void FastRandomContext::FillByteBuffer ( )
inlineprivate

Definition at line 57 of file random.h.

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

◆ 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 464 of file random.cpp.

◆ rand256()

uint256 FastRandomContext::rand256 ( )

generate a random uint256.

Definition at line 385 of file random.cpp.

Here is the call graph for this function:

◆ rand32()

uint32_t FastRandomContext::rand32 ( )
inline

Generate a random 32-bit integer.

Definition at line 125 of file random.h.

Here is the call graph for this function:

◆ rand64()

uint64_t FastRandomContext::rand64 ( )
inline

Generate a random 64-bit integer.

Definition at line 87 of file random.h.

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

◆ randbits()

uint64_t FastRandomContext::randbits ( int  bits)
inline

Generate a random (bits)-bit integer.

Definition at line 96 of file random.h.

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

◆ randbool()

bool FastRandomContext::randbool ( )
inline

Generate a random boolean.

Definition at line 131 of file random.h.

Here is the call graph for this function:

◆ randbytes()

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

Generate random bytes.

Definition at line 396 of file random.cpp.

Here is the call graph for this function:

◆ RandomSeed()

void FastRandomContext::RandomSeed ( )
private

Definition at line 378 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)
inline

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

Definition at line 111 of file random.h.

Member Data Documentation

◆ bitbuf

uint64_t FastRandomContext::bitbuf
private

Definition at line 52 of file random.h.

◆ bitbuf_size

int FastRandomContext::bitbuf_size
private

Definition at line 53 of file random.h.

◆ bytebuf

unsigned char FastRandomContext::bytebuf[64]
private

Definition at line 49 of file random.h.

◆ bytebuf_size

int FastRandomContext::bytebuf_size
private

Definition at line 50 of file random.h.

◆ requires_seed

bool FastRandomContext::requires_seed
private

Definition at line 46 of file random.h.

◆ rng

ChaCha20 FastRandomContext::rng
private

Definition at line 47 of file random.h.


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