Main Page | Namespace List | Class Hierarchy | Class List | File List | Class Members | File Members

Random.h

Go to the documentation of this file.
00001 #pragma once
00002 #ifndef RANDOM_H
00003 #define RANDOM_H
00004 
00005 #include "../../common/normals.h"
00006 #include "../../common/types.h"
00007 #include "RandomGenerator.h"
00008 
00009 #include<valarray>
00010 using namespace std;
00011 
00012 class Random
00013 {
00014 public:
00015 
00017     Random(LongNatural Dimensionality,RandomGenerator* rndGen);
00018 
00020     Random(RandomGenerator* rndGen);
00021 
00023     inline LongNatural GetDimensionality() const;
00024 
00026     Random* clone() const;
00028     inline void GetUniforms(valarray<Real>& variates);
00029 
00031     void GetUniform(Real& variate);
00032 
00033     void Skip(LongNatural numberOfPaths);
00034     void SetSeed(LongNatural Seed);
00035     void Reset();
00036 
00038     inline void GetGaussians(valarray<Real>& variates);
00040     inline void GetGaussian(Real& variate);
00041     void ResetDimensionality(LongNatural NewDimensionality);
00042 
00043 private:
00044     RandomGenerator* InnerGenerator;
00045     LongNatural Dimensionality;
00046     LongNatural InitialSeed;
00047     Real Reciprocal;
00048 };
00049 
00050 LongNatural Random::GetDimensionality() const
00051 {
00052     return Dimensionality;
00053 }
00054 
00055 inline void Random::GetGaussians(valarray<Real>& variates)
00056 {
00057     GetUniforms(variates);
00058 
00059     for (LongNatural i=0; i < Dimensionality; i++)
00060     {
00061         Real x=variates[i];
00062         variates[i] = InverseCumulativeNormal(x);    
00063     }
00064 }
00065 
00066 inline void Random::GetGaussian(Real& variate)
00067 {
00068     GetUniform(variate);
00069     Real x=variate;
00070     variate = InverseCumulativeNormal(x);    
00071 }
00072 
00073 #endif

Note: Generated nightly - reload for latest version
Generated on Thu Dec 22 23:12:37 2005 for terreneuve by doxygen 1.3.6