NEST main@caf0ae8
 
Loading...
Searching...
No Matches
nest::BaseRandomGenerator Class Referenceabstract

Base class for RNG engine wrappers. More...

#include <random_generators.h>

Inheritance diagram for nest::BaseRandomGenerator:
[legend]

Public Member Functions

virtual ~BaseRandomGenerator ()
 
virtual unsigned long operator() (std::uniform_int_distribution< unsigned long > &d)=0
 Calls the provided distribution with the wrapped RNG engine.
 
virtual double operator() (std::uniform_real_distribution<> &d)=0
 
virtual double operator() (std::normal_distribution<> &d)=0
 
virtual double operator() (std::lognormal_distribution<> &d)=0
 
virtual unsigned long operator() (std::binomial_distribution< unsigned long > &d)=0
 
virtual double operator() (std::gamma_distribution<> &d)=0
 
virtual double operator() (std::exponential_distribution<> &d)=0
 
virtual unsigned long operator() (std::discrete_distribution< unsigned long > &d)=0
 
virtual unsigned long operator() (std::poisson_distribution< unsigned long > &d)=0
 
virtual unsigned long operator() (std::uniform_int_distribution< unsigned long > &d, std::uniform_int_distribution< unsigned long >::param_type &p)=0
 Calls the provided distribution with the wrapped RNG engine, using provided distribution parameters.
 
virtual double operator() (std::uniform_real_distribution<> &d, std::uniform_real_distribution<>::param_type &p)=0
 
virtual double operator() (std::normal_distribution<> &d, std::normal_distribution<>::param_type &p)=0
 
virtual double operator() (std::lognormal_distribution<> &d, std::lognormal_distribution<>::param_type &p)=0
 
virtual unsigned long operator() (std::binomial_distribution< unsigned long > &d, std::binomial_distribution< unsigned long >::param_type &p)=0
 
virtual double operator() (std::gamma_distribution<> &d, std::gamma_distribution<>::param_type &p)=0
 
virtual double operator() (std::exponential_distribution<> &d, std::exponential_distribution<>::param_type &p)=0
 
virtual unsigned long operator() (std::discrete_distribution< unsigned long > &d, std::discrete_distribution< unsigned long >::param_type &p)=0
 
virtual unsigned long operator() (std::poisson_distribution< unsigned long > &d, std::poisson_distribution< unsigned long >::param_type &p)=0
 
virtual double drand ()=0
 Uses the wrapped RNG engine to draw a double from a uniform distribution in the range [0, 1).
 
virtual unsigned long ulrand (unsigned long N)=0
 Uses the wrapped RNG engine to draw an unsigned long from a uniform distribution in the range [0, N).
 
virtual void stable_sample (NodeCollection::const_iterator first, NodeCollection::const_iterator last, std::back_insert_iterator< std::vector< NodeIDTriple > > dest, size_t n)=0
 Wrap std::sample for selection from NodeCollection.
 
virtual void partial_shuffle (std::vector< size_t > &data, const size_t n)=0
 Select randomly shuffled elements from vector.
 

Detailed Description

Base class for RNG engine wrappers.

Constructor & Destructor Documentation

◆ ~BaseRandomGenerator()

virtual nest::BaseRandomGenerator::~BaseRandomGenerator ( )
inlinevirtual

Member Function Documentation

◆ drand()

◆ operator()() [1/18]

virtual unsigned long nest::BaseRandomGenerator::operator() ( std::binomial_distribution< unsigned long > &  d)
pure virtual

◆ operator()() [2/18]

virtual unsigned long nest::BaseRandomGenerator::operator() ( std::binomial_distribution< unsigned long > &  d,
std::binomial_distribution< unsigned long >::param_type &  p 
)
pure virtual

◆ operator()() [3/18]

virtual unsigned long nest::BaseRandomGenerator::operator() ( std::discrete_distribution< unsigned long > &  d)
pure virtual

◆ operator()() [4/18]

virtual unsigned long nest::BaseRandomGenerator::operator() ( std::discrete_distribution< unsigned long > &  d,
std::discrete_distribution< unsigned long >::param_type &  p 
)
pure virtual

◆ operator()() [5/18]

virtual double nest::BaseRandomGenerator::operator() ( std::exponential_distribution<> &  d)
pure virtual

◆ operator()() [6/18]

virtual double nest::BaseRandomGenerator::operator() ( std::exponential_distribution<> &  d,
std::exponential_distribution<>::param_type &  p 
)
pure virtual

◆ operator()() [7/18]

virtual double nest::BaseRandomGenerator::operator() ( std::gamma_distribution<> &  d)
pure virtual

◆ operator()() [8/18]

virtual double nest::BaseRandomGenerator::operator() ( std::gamma_distribution<> &  d,
std::gamma_distribution<>::param_type &  p 
)
pure virtual

◆ operator()() [9/18]

virtual double nest::BaseRandomGenerator::operator() ( std::lognormal_distribution<> &  d)
pure virtual

◆ operator()() [10/18]

virtual double nest::BaseRandomGenerator::operator() ( std::lognormal_distribution<> &  d,
std::lognormal_distribution<>::param_type &  p 
)
pure virtual

◆ operator()() [11/18]

virtual double nest::BaseRandomGenerator::operator() ( std::normal_distribution<> &  d)
pure virtual

◆ operator()() [12/18]

virtual double nest::BaseRandomGenerator::operator() ( std::normal_distribution<> &  d,
std::normal_distribution<>::param_type &  p 
)
pure virtual

◆ operator()() [13/18]

virtual unsigned long nest::BaseRandomGenerator::operator() ( std::poisson_distribution< unsigned long > &  d)
pure virtual

◆ operator()() [14/18]

virtual unsigned long nest::BaseRandomGenerator::operator() ( std::poisson_distribution< unsigned long > &  d,
std::poisson_distribution< unsigned long >::param_type &  p 
)
pure virtual

◆ operator()() [15/18]

virtual unsigned long nest::BaseRandomGenerator::operator() ( std::uniform_int_distribution< unsigned long > &  d)
pure virtual

Calls the provided distribution with the wrapped RNG engine.

One operator per distribution must be defined.

Parameters
dDistribution that will be called.

Implemented in nest::RandomGenerator< RandomEngineT >.

◆ operator()() [16/18]

virtual unsigned long nest::BaseRandomGenerator::operator() ( std::uniform_int_distribution< unsigned long > &  d,
std::uniform_int_distribution< unsigned long >::param_type &  p 
)
pure virtual

Calls the provided distribution with the wrapped RNG engine, using provided distribution parameters.

One operator per distribution must be defined.

Parameters
dDistribution that will be called.
pDistribution parameters.

Implemented in nest::RandomGenerator< RandomEngineT >.

◆ operator()() [17/18]

virtual double nest::BaseRandomGenerator::operator() ( std::uniform_real_distribution<> &  d)
pure virtual

◆ operator()() [18/18]

virtual double nest::BaseRandomGenerator::operator() ( std::uniform_real_distribution<> &  d,
std::uniform_real_distribution<>::param_type &  p 
)
pure virtual

◆ partial_shuffle()

virtual void nest::BaseRandomGenerator::partial_shuffle ( std::vector< size_t > &  data,
const size_t  n 
)
pure virtual

Select randomly shuffled elements from vector.

Places n elements chosen from data without replacement, in random order, at the beginning of data and then reduces the size of data to n. If n exceeds data.size(), all elements are kept and only shuffled.

Parameters
dataVector to be shuffled and possibly shortened.
nNumber of elements to select.

Implemented in nest::RandomGenerator< RandomEngineT >.

Referenced by nest::SPManager::create_synapses(), nest::SPManager::delete_synapses_from_post(), and nest::SPManager::delete_synapses_from_pre().

Here is the caller graph for this function:

◆ stable_sample()

virtual void nest::BaseRandomGenerator::stable_sample ( NodeCollection::const_iterator  first,
NodeCollection::const_iterator  last,
std::back_insert_iterator< std::vector< NodeIDTriple > >  dest,
size_t  n 
)
pure virtual

Wrap std::sample for selection from NodeCollection.

Inserts random stable sample without replacement of size n from range [first, last)into dest.

Note
Running this with different random seeds will select different elements, but the order of elements will always be the same as in the node collection from which we sample. In particular, if n == nc.size(), then dest will contain the original node collection (as an explicit vector).

Implemented in nest::RandomGenerator< RandomEngineT >.

Referenced by nest::ThirdBernoulliWithPoolBuilder::third_connect().

Here is the caller graph for this function:

◆ ulrand()

virtual unsigned long nest::BaseRandomGenerator::ulrand ( unsigned long  N)
pure virtual

Uses the wrapped RNG engine to draw an unsigned long from a uniform distribution in the range [0, N).

Parameters
NMaximum value that can be drawn.

Implemented in nest::RandomGenerator< RandomEngineT >.

Referenced by nest::FixedOutDegreeBuilder::connect_(), nest::FixedTotalNumberBuilder::connect_(), nest::SymmetricBernoulliBuilder::connect_(), nest::ConnectionCreator::fixed_indegree_(), nest::FixedInDegreeBuilder::inner_connect_(), nest::ThirdBernoulliWithPoolBuilder::third_connect(), and nest::UniformIntParameter::value().

Here is the caller graph for this function:

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