PCG Lib
Library for procedural content generation
Public Member Functions | Public Attributes | Private Member Functions | Private Attributes | List of all members
skr::pcg::RNG Class Reference

random number generator helper class More...

#include <rng.h>

Public Member Functions

 RNG (bool printSeed=false)
 constructor uses random seed More...
 
void SetRandomSeed ()
 Initializes random number generator with random seed. More...
 
void SetSeed (uint32_t seed)
 Initializes random number generator with given fixed seed. More...
 
void SetPrintSeed (bool printSeed)
 Set printSeed Parameter. More...
 
int GetRandomInteger (const int lower, const int upper)
 returns a random interger from given range More...
 
float GetRandomFloat (const float lower, const float upper)
 returns a random float from given range More...
 
double GetRandomDouble (const double lower, const double upper)
 returns a random double from given range More...
 

Public Attributes

uint32_t _seed
 Seed value for random number generator // HACK this only public to make the core application update it if an invalid one is found. I really don't like it, but its the best I can do for now. More...
 

Private Member Functions

void InitWithRandomSeed ()
 c true to print seed to cmd and log, otherwise false More...
 
void InitWithFixedSeed (uint32_t seed)
 Initializes random number generator with given fixed seed. More...
 
bool CheckViableSeed (uint32_t seed)
 check if a given seed is not on the blacklist this is easy solution/hack to prevent levels with overlapping rooms, etc. to be generated More...
 
uint32_t GenerateViableSeed ()
 Generates a new seed that is checked to be viable. More...
 

Private Attributes

std::mt19937 _randomEngine
 
std::vector< uint32_t > _seedBlacklist = { 72304668, 2126917180, 3620160884 }
 c mersenne-twister engine for random number generator More...
 
bool _printSeed
 c list of seeds know to not produce a viable level, instead puts generation into an endless loop More...
 

Detailed Description

random number generator helper class

Constructor & Destructor Documentation

◆ RNG()

skr::pcg::RNG::RNG ( bool  printSeed = false)

constructor uses random seed

Parameters
printSeedset true to print seed to cmd and log, otherweise false. Default: false

Member Function Documentation

◆ CheckViableSeed()

bool skr::pcg::RNG::CheckViableSeed ( uint32_t  seed)
private

check if a given seed is not on the blacklist this is easy solution/hack to prevent levels with overlapping rooms, etc. to be generated

Parameters
seedseed value to check
Returns
true if seed is not on blacklist, otherwise false

◆ GenerateViableSeed()

uint32_t skr::pcg::RNG::GenerateViableSeed ( )
private

Generates a new seed that is checked to be viable.

Returns
seed value that is not on blacklist

◆ GetRandomDouble()

double skr::pcg::RNG::GetRandomDouble ( const double  lower,
const double  upper 
)

returns a random double from given range

Parameters
lowerlower bound
upperupper bound
Returns
random idouble

◆ GetRandomFloat()

float skr::pcg::RNG::GetRandomFloat ( const float  lower,
const float  upper 
)

returns a random float from given range

Parameters
lowerlower bound
upperupper bound
Returns
random float

◆ GetRandomInteger()

int skr::pcg::RNG::GetRandomInteger ( const int  lower,
const int  upper 
)

returns a random interger from given range

Parameters
lowerlower bound
upperupper bound
Returns
random integer

◆ InitWithFixedSeed()

void skr::pcg::RNG::InitWithFixedSeed ( uint32_t  seed)
private

Initializes random number generator with given fixed seed.

Parameters
seedgiven seed

◆ InitWithRandomSeed()

void skr::pcg::RNG::InitWithRandomSeed ( )
private

c true to print seed to cmd and log, otherwise false

Initializes random number generator with random seed

◆ SetPrintSeed()

void skr::pcg::RNG::SetPrintSeed ( bool  printSeed)

Set printSeed Parameter.

Parameters
printSeedtrue to print seed to cmd and log, otherwise false

◆ SetRandomSeed()

void skr::pcg::RNG::SetRandomSeed ( )

Initializes random number generator with random seed.

◆ SetSeed()

void skr::pcg::RNG::SetSeed ( uint32_t  seed)

Initializes random number generator with given fixed seed.

Parameters
seedgiven seed

Member Data Documentation

◆ _printSeed

bool skr::pcg::RNG::_printSeed
private

c list of seeds know to not produce a viable level, instead puts generation into an endless loop

◆ _randomEngine

std::mt19937 skr::pcg::RNG::_randomEngine
private

◆ _seed

uint32_t skr::pcg::RNG::_seed

Seed value for random number generator // HACK this only public to make the core application update it if an invalid one is found. I really don't like it, but its the best I can do for now.

◆ _seedBlacklist

std::vector<uint32_t> skr::pcg::RNG::_seedBlacklist = { 72304668, 2126917180, 3620160884 }
private

c mersenne-twister engine for random number generator


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