31 #ifndef RANDOMIZER_HPP
32 #define RANDOMIZER_HPP
35 #define NMINVALUES_DEFAULT 10000
47 #ifdef AGGREGPACKING_SERIALIZATION
56 #ifdef AGGREGPACKING_BOOST_PYTHON
57 #include <boost/python.hpp>
58 namespace bp = boost::python;
61 namespace aggregpacking {
75 static double random() {
return (
double)rand()/(double)RAND_MAX; }
111 #ifdef AGGREGPACKING_SERIALIZATION
132 #ifdef AGGREGPACKING_SERIALIZATION
148 virtual double cdf(
double size)
const = 0;
162 #ifdef AGGREGPACKING_SERIALIZATION
223 #ifdef AGGREGPACKING_SERIALIZATION
248 virtual double cdf(
double size)
const;
260 #ifdef AGGREGPACKING_SERIALIZATION
306 #ifdef AGGREGPACKING_SERIALIZATION
338 virtual double cdf(
double size)
const;
344 #ifdef AGGREGPACKING_SERIALIZATION
365 #ifdef AGGREGPACKING_BOOST_PYTHON
366 void py_randomizer();
double take() const
Returns random size. A lot of random sizes should converge to the prescribed sieve curve...
Definition: randomizer.cpp:113
void setExponent(double v)
Setter for exponent.
Definition: randomizer.hpp:254
virtual double cdf(double size) const
Definition: randomizer.cpp:198
virtual double cdf(double size) const
Definition: randomizer.cpp:258
friend ostream & operator<<(ostream &f, const FullerCurveRandomizer &o)
FullerCurveRandomizer to ostream shift operator.
Definition: randomizer.cpp:206
int findInterval(double size) const
Finds an interval which size blongs to.
Definition: randomizer.cpp:249
ExperimentalSieveCurveRandomizer(int n, const sieve_curve &v, const string &m)
Constructor from nMinValues, sieve_curve and file name.
Definition: randomizer.hpp:318
void check()
Checks, if given sieve curve is correct. Throw error if not.
Definition: randomizer.cpp:230
string getFileName()
Getter for file name.
Definition: randomizer.hpp:164
virtual void save() const
Saves receiver into this->fileName.
Definition: randomizer.hpp:175
AggregSizeRandomizer(const string &m)
Constructor from file name.
Definition: randomizer.hpp:139
Random size generator for experimental sieve curve.
Definition: randomizer.hpp:284
File containing several auxiliary functions.
friend istream & operator>>(istream &f, FullerCurveRandomizer &o)
FullerCurveRandomizer from istream shift operator.
Definition: randomizer.cpp:213
Abstract class representing random size generator for given sieve curve.
Definition: randomizer.hpp:99
static int seed
Random seed.
Definition: randomizer.hpp:71
virtual bool load()
Loads receiver from this->fileName.
Definition: randomizer.hpp:186
virtual const string & getClassName()=0
Returns string representation of Sphere class name.
static AggregSizeRandomizer * Load(istream &is)
Create and return a new AggregSizeRandomizer from given istream.
Definition: randomizer.cpp:145
sieve_curve values
Sieve curve as a pair array (size,relative cumulative mass)
Definition: randomizer.hpp:291
virtual double getMaxSize() const
Returns maximum defined size.
Definition: randomizer.hpp:160
virtual const string & getClassName()
Returns string representation of FullerCurveRandomizer class name.
Definition: randomizer.hpp:265
double getExponent()
Getter for exponent.
Definition: randomizer.hpp:251
virtual double getMinSize() const
Returns minimum defined size.
Definition: randomizer.hpp:157
sizes_t sizes
Array of increasing sizes. Discrete representation of given sieve curve in terms of aggregate size...
Definition: randomizer.hpp:106
string fileName
File name for saving itself.
Definition: randomizer.hpp:113
void saveObject(const T &t, const string &fName, const string &memoizeDb)
Auxiliary template function for saving objects to files.
Definition: utils.hpp:142
const sieve_curve & getValues() const
Getter for values (returns by const reference)
Definition: randomizer.hpp:330
virtual void save(const string &fName) const
Saves receiver into specified file.
Definition: randomizer.hpp:172
virtual double getMinSize() const
Returns minimum defined size.
Definition: randomizer.hpp:340
virtual double getMaxSize() const
Returns maximum defined size.
Definition: randomizer.hpp:258
double exponent
Exponent of analytical expression.
Definition: randomizer.hpp:210
sieve_curve getValues()
Getter for values (returns by value)
Definition: randomizer.hpp:333
vector< double > sizes_t
typedef for sizes type
Definition: randomizer.hpp:102
static const string className
String representation of FullerCurveRandomizer class name.
Definition: randomizer.hpp:262
static void setSeed(int s)
Setter for seed.
Definition: randomizer.hpp:88
ExperimentalSieveCurveRandomizer()
Default constructor, sets values to ((0.5e-3,0.0),(16e-3,1.0))
Definition: randomizer.hpp:304
static int getSeed()
Getter for seed.
Definition: randomizer.hpp:83
virtual double getMaxSize() const
Returns maximum defined size.
Definition: randomizer.hpp:342
double minSize
User defined minimum aggregate size.
Definition: randomizer.hpp:213
ExperimentalSieveCurveRandomizer(int n, const sieve_curve &v)
Constructor from nMinValues and sieve_curve.
Definition: randomizer.hpp:311
double maxSize
Maximum size from the analytical expression.
Definition: randomizer.hpp:216
virtual double getMinSize() const
Returns minimum defined size.
Definition: randomizer.hpp:256
virtual double cdf(double size) const =0
friend istream & operator>>(istream &f, AggregSizeRandomizer &o)
AggregSizeRandomizer from istream shift operator.
Definition: randomizer.cpp:177
static double random()
Returns random number in the interval [0,1) (with uniform distribution)
Definition: randomizer.hpp:75
vector< array< double, 2 > > sieve_curve
typedef for sieve curve
Definition: randomizer.hpp:287
static double randint(int m)
Returns random integer in the interval [0,m-1] (with uniform istribution)
Definition: randomizer.hpp:80
void saveSizes(ostream &os) const
Save sizes to ostream.
Definition: randomizer.cpp:128
virtual const string & getClassName()
Returns string representation of ExperimentalSieveCurveRandomizer class name.
Definition: randomizer.hpp:349
bool loadObject(T &t, const string &fName, const string &memoizeDb)
Auxiliary template function for lading objects from files.
Definition: utils.hpp:151
void initSizes(unsigned int nMinValues)
According to given parameters, constructs sizes. It is numerically converted sieve curve from terms o...
Definition: randomizer.cpp:53
const sizes_t & getSizes()
Getter for sizes.
Definition: randomizer.hpp:154
friend ostream & operator<<(ostream &f, const ExperimentalSieveCurveRandomizer &o)
ExperimentalSieveCurveRandomizer to ostream shift operator.
Definition: randomizer.cpp:275
AggregSizeRandomizer()
Default constructor.
Definition: randomizer.hpp:134
Class representing most simple random numbers generator.
Definition: randomizer.hpp:68
virtual bool load(const string &fName)
Loads receiver from specified file.
Definition: randomizer.hpp:181
FullerCurveRandomizer()
Default constructor.
Definition: randomizer.hpp:221
Random size generator for Fuller curve.
Definition: randomizer.hpp:207
friend ostream & operator<<(ostream &f, const AggregSizeRandomizer &o)
AggregSizeRandomizer to ostream shift operator.
Definition: randomizer.cpp:162
friend istream & operator>>(istream &f, ExperimentalSieveCurveRandomizer &o)
ExperimentalSieveCurveRandomizer from istream shift operator.
Definition: randomizer.cpp:285
FullerCurveRandomizer(int n, double e, double minSize, double maxSize)
Constructor.
Definition: randomizer.hpp:230
void setValues(const sieve_curve &sc)
Setter for values.
Definition: randomizer.hpp:336
FullerCurveRandomizer(int n, double e, double minSize, double maxSize, const string &m)
Constructor.
Definition: randomizer.hpp:239
void loadSizes(istream &is)
Load sizes from istream.
Definition: randomizer.cpp:136
static const string className
String representation of ExperimentalSieveCurveRandomizer class name.
Definition: randomizer.hpp:346