|
kblib 0.2.3
General utilities library for modern C++
|
Provides utilities to correctly and expressively use C++11's random number generation library, without requiring a PhD. More...
#include "algorithm.h"#include "iterators.h"#include "memory.h"#include "simple.h"#include "stats.h"#include "tdecl.h"#include <limits>#include <random>#include <vector>

Go to the source code of this file.
Namespaces | |
| namespace | kblib |
| The main namespace in which all entities from kblib are defined. | |
| namespace | kblib::lcgs |
| namespace | kblib::lcgs::common_lcgs |
| namespace | kblib::lcgs::best_lcgs |
Typedefs | |
| template<typename UIntType , UIntType a, UIntType c, UIntType b> | |
| using | kblib::lcgs::lcg_p2 = std::linear_congruential_engine< UIntType, a, c, ipow2(b)> |
| using | kblib::lcgs::common_lcgs::rand48 = transform_engine< lcg_p2< std::uint_fast64_t, 25214903917u, 11u, 48u >, shift_mask< std::uint_fast32_t, 16u > > |
| using | kblib::lcgs::common_lcgs::java_rand = rand48 |
| using | kblib::lcgs::common_lcgs::glibc_rand0 = transform_engine< lcg_p2< std::uint_fast32_t, 1103515245, 12345, 31u >, shift_mask< std::uint_fast32_t, 0, ipow2(30) - 1 > > |
| using | kblib::lcgs::common_lcgs::ansic_rand = transform_engine< lcg_p2< std::uint_fast32_t, 1103515245, 12345, 31u >, shift_mask< std::uint_fast32_t, 16, ipow2(14) - 1 > > |
| using | kblib::lcgs::common_lcgs::knuth_lcg = std::linear_congruential_engine< uint64_t, 6364136223846793005U, 1442695040888963407U, 0U > |
| using | kblib::lcgs::best_lcgs::lcg32 = lcg_p2< std::uint_fast32_t, 0xa13fc965u, 1u, 32u > |
| using | kblib::lcgs::best_lcgs::mcg32 = lcg_p2< std::uint_fast32_t, 0x93d765ddu, 0u, 32u > |
| using | kblib::lcgs::best_lcgs::lcg48 = lcg_p2< std::uint_fast64_t, 0xb67a49a5466du, 1u, 48u > |
| using | kblib::lcgs::best_lcgs::mcg48 = lcg_p2< std::uint_fast64_t, 0xbdcdbb079f8du, 0u, 48u > |
| using | kblib::lcgs::best_lcgs::lcg64 = lcg_p2< std::uint_fast64_t, 0xaf251af3b0f025b5u, 1u, 64u > |
| using | kblib::lcgs::best_lcgs::mcg64 = lcg_p2< std::uint_fast64_t, 0xf1357aea2e62a9c5u, 0u, 64u > |
Functions | |
| template<typename Array , typename RandomGenerator , typename freqtype = double> | |
| constexpr auto | kblib::chooseCategorical (Array &&cats, RandomGenerator &r) -> decltype(cats.size()) |
| Given a categorical distribution cats, selects one category. More... | |
| template<typename Gen , typename Source > | |
| auto | kblib::seeded (Source &&s) -> Gen |
| template<typename Gen > | |
| auto | kblib::seeded () -> Gen |
| template<typename UIntType > | |
| constexpr auto | kblib::ipow2 (UIntType b) noexcept -> UIntType |
Variables | |
| template<typename T > | |
| constexpr std::size_t | kblib::state_size_v = state_size<T>::value |
| template<typename T , typename = void> | |
| constexpr std::size_t | kblib::seed_discard_v = 0 |
Provides utilities to correctly and expressively use C++11's random number generation library, without requiring a PhD.
Definition in file random.h.