MCKL
Monte Carlo Kernel Library
Public Types | Public Member Functions | Static Public Member Functions | Friends | List of all members
mckl::SeedGenerator< ResultType, ID, Randomize, Atomic > Class Template Reference

Seed generator. More...

#include <mckl/random/seed.hpp>

Public Types

using result_type = ResultType
 
using seed_type = std::conditional_t< sizeof(ResultType) % sizeof(std::uint64_t)==0, std::uint64_t, std::uint32_t >
 The type of the internal seed. More...
 

Public Member Functions

 SeedGenerator (const SeedGenerator< ResultType, ID, Randomize, Atomic > &)=delete
 
result_type get ()
 Get the next key. More...
 
seed_type np () const
 The number of partitions. More...
 
SeedGenerator< ResultType, ID, Randomize, Atomic > & operator= (const SeedGenerator< ResultType, ID, Randomize, Atomic > &)=delete
 
void partition (seed_type np, seed_type rank)
 Set the number of partitions and the rank of this partition. More...
 
seed_type rank () const
 The rank of this partition. More...
 
void set (seed_type s)
 Set the internal seed. More...
 

Static Public Member Functions

static SeedGenerator< ResultType, ID, Randomize, Atomic > & instance ()
 

Friends

template<typename CharT , typename Traits >
std::basic_ostream< CharT, Traits > & operator<< (std::basic_ostream< CharT, Traits > &os, const SeedGenerator< ResultType, ID, Randomize, Atomic > &sg)
 
template<typename CharT , typename Traits >
std::basic_istream< CharT, Traits > & operator>> (std::basic_istream< CharT, Traits > &is, SeedGenerator< ResultType, ID, Randomize, Atomic > &sg)
 

Detailed Description

template<typename ResultType, typename ID = std::integral_constant<std::size_t, sizeof(ResultType)>, bool Randomize = true, bool Atomic = true>
class mckl::SeedGenerator< ResultType, ID, Randomize, Atomic >

Seed generator.

Definition at line 69 of file seed.hpp.

Member Typedef Documentation

◆ result_type

template<typename ResultType, typename ID = std::integral_constant<std::size_t, sizeof(ResultType)>, bool Randomize = true, bool Atomic = true>
using mckl::SeedGenerator< ResultType, ID, Randomize, Atomic >::result_type = ResultType

Definition at line 80 of file seed.hpp.

◆ seed_type

template<typename ResultType, typename ID = std::integral_constant<std::size_t, sizeof(ResultType)>, bool Randomize = true, bool Atomic = true>
using mckl::SeedGenerator< ResultType, ID, Randomize, Atomic >::seed_type = std::conditional_t<sizeof(ResultType) % sizeof(std::uint64_t) == 0, std::uint64_t, std::uint32_t>

The type of the internal seed.

Definition at line 78 of file seed.hpp.

Constructor & Destructor Documentation

◆ SeedGenerator()

template<typename ResultType, typename ID = std::integral_constant<std::size_t, sizeof(ResultType)>, bool Randomize = true, bool Atomic = true>
mckl::SeedGenerator< ResultType, ID, Randomize, Atomic >::SeedGenerator ( const SeedGenerator< ResultType, ID, Randomize, Atomic > &  )
delete

Member Function Documentation

◆ get()

template<typename ResultType, typename ID = std::integral_constant<std::size_t, sizeof(ResultType)>, bool Randomize = true, bool Atomic = true>
result_type mckl::SeedGenerator< ResultType, ID, Randomize, Atomic >::get ( )
inline

Get the next key.

Definition at line 99 of file seed.hpp.

◆ instance()

template<typename ResultType, typename ID = std::integral_constant<std::size_t, sizeof(ResultType)>, bool Randomize = true, bool Atomic = true>
static SeedGenerator<ResultType, ID, Randomize, Atomic>& mckl::SeedGenerator< ResultType, ID, Randomize, Atomic >::instance ( )
inlinestatic

Definition at line 88 of file seed.hpp.

◆ np()

template<typename ResultType, typename ID = std::integral_constant<std::size_t, sizeof(ResultType)>, bool Randomize = true, bool Atomic = true>
seed_type mckl::SeedGenerator< ResultType, ID, Randomize, Atomic >::np ( ) const
inline

The number of partitions.

Definition at line 102 of file seed.hpp.

◆ operator=()

template<typename ResultType, typename ID = std::integral_constant<std::size_t, sizeof(ResultType)>, bool Randomize = true, bool Atomic = true>
SeedGenerator<ResultType, ID, Randomize, Atomic>& mckl::SeedGenerator< ResultType, ID, Randomize, Atomic >::operator= ( const SeedGenerator< ResultType, ID, Randomize, Atomic > &  )
delete

◆ partition()

template<typename ResultType, typename ID = std::integral_constant<std::size_t, sizeof(ResultType)>, bool Randomize = true, bool Atomic = true>
void mckl::SeedGenerator< ResultType, ID, Randomize, Atomic >::partition ( seed_type  np,
seed_type  rank 
)
inline

Set the number of partitions and the rank of this partition.

Definition at line 108 of file seed.hpp.

◆ rank()

template<typename ResultType, typename ID = std::integral_constant<std::size_t, sizeof(ResultType)>, bool Randomize = true, bool Atomic = true>
seed_type mckl::SeedGenerator< ResultType, ID, Randomize, Atomic >::rank ( ) const
inline

The rank of this partition.

Definition at line 105 of file seed.hpp.

◆ set()

template<typename ResultType, typename ID = std::integral_constant<std::size_t, sizeof(ResultType)>, bool Randomize = true, bool Atomic = true>
void mckl::SeedGenerator< ResultType, ID, Randomize, Atomic >::set ( seed_type  s)
inline

Set the internal seed.

Definition at line 96 of file seed.hpp.

Friends And Related Function Documentation

◆ operator<<

template<typename ResultType, typename ID = std::integral_constant<std::size_t, sizeof(ResultType)>, bool Randomize = true, bool Atomic = true>
template<typename CharT , typename Traits >
std::basic_ostream<CharT, Traits>& operator<< ( std::basic_ostream< CharT, Traits > &  os,
const SeedGenerator< ResultType, ID, Randomize, Atomic > &  sg 
)
friend

Definition at line 114 of file seed.hpp.

◆ operator>>

template<typename ResultType, typename ID = std::integral_constant<std::size_t, sizeof(ResultType)>, bool Randomize = true, bool Atomic = true>
template<typename CharT , typename Traits >
std::basic_istream<CharT, Traits>& operator>> ( std::basic_istream< CharT, Traits > &  is,
SeedGenerator< ResultType, ID, Randomize, Atomic > &  sg 
)
friend

Definition at line 131 of file seed.hpp.