GlitchyByte Lib  0.3.1
GlitchyByte general library to bootstrap development.
Public Member Functions | List of all members
gb::Random< TEngine > Class Template Reference

Public Member Functions

template<std::floating_point T>
std::function< T()> createCanonicalGenerator () noexcept
 
template<std::integral T>
std::function< T()> createIntGenerator (T const low, T const high) noexcept
 
template<std::floating_point T>
std::function< T()> createFloatGenerator (T const low, T const high) noexcept
 
template<HasSize TContainer>
std::function< size_t()> createContainerIndexGenerator (TContainer const &container) noexcept
 
template<IndexableContainer TContainer>
TContainer::value_type & pickFromContainer (TContainer &container) noexcept
 
template<class TContainer >
requires IterableContainer< TContainer > &&!HasIndexOperator< TContainer > &&HasNonConstValueTypeIterator< TContainer > TContainer::value_type & pickFromContainer (TContainer &container) noexcept
 
template<class TContainer >
requires IterableContainer< TContainer > &&!HasIndexOperator< TContainer > &&HasConstValueTypeIterator< TContainer > TContainer::value_type const & pickFromContainer (TContainer &container) noexcept
 
template<Numeric TWP, size_t N>
size_t pickIndexFromWeightedProbability (const TWP(&wps)[N]) noexcept
 
template<class TContainer >
requires IndexableContainer< TContainer > &&Numeric< typename TContainer::value_type > size_t pickIndexFromWeightedProbability (TContainer const &wps) noexcept
 
template<Numeric TWP, size_t N>
size_t pickIndexFromNormalizedWeightedProbability (const TWP(&wps)[N]) noexcept
 
template<class TContainer >
requires IterableContainer< TContainer > &&IndexableContainer< TContainer > &&Numeric< typename TContainer::value_type > size_t pickIndexFromNormalizedWeightedProbability (TContainer const &wps) noexcept
 

Detailed Description

template<typename TEngine>
class gb::Random< TEngine >

Random number function creator.

Template Parameters
TEngineRandom number engine. (https://en.cppreference.com/w/cpp/numeric/random)

Member Function Documentation

◆ createCanonicalGenerator()

template<typename TEngine >
template<std::floating_point T>
std::function<T()> gb::Random< TEngine >::createCanonicalGenerator ( )
inlinenoexcept

Creates a random number generator function that generates floating point numbers [0, 1).

Template Parameters
TFloating point type.
Returns
A function that generates random numbers in the range.

◆ createIntGenerator()

template<typename TEngine >
template<std::integral T>
std::function<T()> gb::Random< TEngine >::createIntGenerator ( T const  low,
T const  high 
)
inlinenoexcept

Creates a random number generator function that generates integer numbers [low, high].

Template Parameters
TInteger type.
Parameters
lowRange low boundary, inclusive.
highRange high boundary, inclusive.
Returns
A function that generates random numbers in the range.

◆ createFloatGenerator()

template<typename TEngine >
template<std::floating_point T>
std::function<T()> gb::Random< TEngine >::createFloatGenerator ( T const  low,
T const  high 
)
inlinenoexcept

Creates a random number generator function that generates floating point numbers [low, high).

Template Parameters
TFloating point type.
Parameters
lowRange low boundary, inclusive.
highRange high boundary, exclusive.
Returns
A function that generates random numbers in the range.

◆ createContainerIndexGenerator()

template<typename TEngine >
template<HasSize TContainer>
std::function<size_t()> gb::Random< TEngine >::createContainerIndexGenerator ( TContainer const &  container)
inlinenoexcept

This is a convenience method that creates a random number generator function that generates an integer in the range of the container indexes.

If container is empty, behavior is undefined. Don't call with an empty container!

Template Parameters
TContainerContainer type.
Parameters
containerThe container from which to get the index range.
Returns
A function that generates random numbers in the range.

◆ pickFromContainer() [1/3]

template<typename TEngine >
template<IndexableContainer TContainer>
TContainer::value_type& gb::Random< TEngine >::pickFromContainer ( TContainer &  container)
inlinenoexcept

This is a convenience method to pick a random item from a container.

If container is empty, behavior is undefined. Don't call with an empty container!

Template Parameters
TContainerContainer type.
Parameters
containerThe container from which to pick an item.
Returns
A reference to the randomly picked item.

◆ pickFromContainer() [2/3]

template<typename TEngine >
template<class TContainer >
requires IterableContainer<TContainer>&& !HasIndexOperator<TContainer>&& HasNonConstValueTypeIterator<TContainer> TContainer::value_type& gb::Random< TEngine >::pickFromContainer ( TContainer &  container)
inlinenoexcept

This is a convenience method to pick a random item from a container.

This template is for non-const default iterator.

If container is empty, behavior is undefined. Don't call with an empty container!

Template Parameters
TContainerContainer type.
Parameters
containerThe container from which to pick an item.
Returns
A reference to the randomly picked item.

◆ pickFromContainer() [3/3]

template<typename TEngine >
template<class TContainer >
requires IterableContainer<TContainer>&& !HasIndexOperator<TContainer>&& HasConstValueTypeIterator<TContainer> TContainer::value_type const& gb::Random< TEngine >::pickFromContainer ( TContainer &  container)
inlinenoexcept

This is a convenience method to pick a random item from a container.

This template is for const default iterator.

If container is empty, behavior is undefined. Don't call with an empty container!

Template Parameters
TContainerContainer type.
Parameters
containerThe container from which to pick an item.
Returns
A reference to the randomly picked item.

◆ pickIndexFromWeightedProbability() [1/2]

template<typename TEngine >
template<Numeric TWP, size_t N>
size_t gb::Random< TEngine >::pickIndexFromWeightedProbability ( const TWP(&)  wps[N])
inlinenoexcept

Picks a random index given ordered weighted probabilities.

Template Parameters
TWPWeighted probability type.
NNumber of weights.
Parameters
wpsWeighted probabilities.
Returns
A random index.

◆ pickIndexFromWeightedProbability() [2/2]

template<typename TEngine >
template<class TContainer >
requires IndexableContainer<TContainer>&& Numeric<typename TContainer::value_type> size_t gb::Random< TEngine >::pickIndexFromWeightedProbability ( TContainer const &  wps)
inlinenoexcept

Picks a random index given ordered weighted probabilities.

Template Parameters
TContainerContainer type.
Parameters
wpsWeighted probabilities.
Returns
A random index.

◆ pickIndexFromNormalizedWeightedProbability() [1/2]

template<typename TEngine >
template<Numeric TWP, size_t N>
size_t gb::Random< TEngine >::pickIndexFromNormalizedWeightedProbability ( const TWP(&)  wps[N])
inlinenoexcept

Picks a random index given ordered weighted probabilities.

This version accepts zeroes and negative values, and normalizes values to be able to pick an index.

Template Parameters
TWPWeighted probability type.
NNumber of weights.
Parameters
wpsWeighted probabilities.
Returns
A random index.

◆ pickIndexFromNormalizedWeightedProbability() [2/2]

template<typename TEngine >
template<class TContainer >
requires IterableContainer<TContainer>&& IndexableContainer<TContainer>&& Numeric<typename TContainer::value_type> size_t gb::Random< TEngine >::pickIndexFromNormalizedWeightedProbability ( TContainer const &  wps)
inlinenoexcept

Picks a random index given ordered weighted probabilities.

This version accepts zeroes and negative values, and normalizes values to be able to pick an index.

Template Parameters
TContainerContainer type.
Parameters
wpsWeighted probabilities.
Returns
A random index.

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