Random.h
Go to the documentation of this file.00001 #ifndef SimTK_SimTKCOMMON_RANDOM_H_
00002 #define SimTK_SimTKCOMMON_RANDOM_H_
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #include "SimTKcommon/basics.h"
00036
00037 namespace SimTK {
00038
00062 class SimTK_SimTKCOMMON_EXPORT Random {
00063 public:
00064 class Uniform;
00065 class Gaussian;
00066 class RandomImpl;
00067 ~Random();
00071 void setSeed(int seed);
00075 Real getValue() const;
00079 void fillArray(Real array[], int length) const;
00080 protected:
00081 RandomImpl* impl;
00085 Random();
00089 RandomImpl& getImpl();
00093 const RandomImpl& getConstImpl() const;
00094 private:
00095
00096 Random(const Random& r);
00097 Random operator=(const Random& r);
00098 };
00099
00104 class SimTK_SimTKCOMMON_EXPORT Random::Uniform : public Random {
00105 public:
00106 class UniformImpl;
00110 Uniform();
00114 Uniform(Real min, Real max);
00118 int getIntValue();
00122 Real getMin() const;
00126 void setMin(Real min);
00130 Real getMax() const;
00134 void setMax(Real max);
00135 protected:
00136 UniformImpl& getImpl();
00137 const UniformImpl& getConstImpl() const;
00138 private:
00139
00140 Uniform(const Uniform& r);
00141 Uniform operator=(const Uniform& r);
00142 };
00143
00149 class SimTK_SimTKCOMMON_EXPORT Random::Gaussian : public Random {
00150 public:
00151 class GaussianImpl;
00155 Gaussian();
00159 Gaussian(Real mean, Real stddev);
00163 Real getMean() const;
00167 void setMean(Real mean);
00171 Real getStdDev() const;
00175 void setStdDev(Real stddev);
00176 protected:
00177 GaussianImpl& getImpl();
00178 const GaussianImpl& getConstImpl() const;
00179 private:
00180
00181 Gaussian(const Gaussian& r);
00182 Gaussian operator=(const Gaussian& r);
00183 };
00184
00185 }
00186
00187 #endif // SimTK_SimTKCOMMON_RANDOM_H_