00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkNormalVariateGenerator_h
00018 #define __itkNormalVariateGenerator_h
00019
00020 #include "itkObjectFactory.h"
00021 #include "itkRandomVariateGeneratorBase.h"
00022
00023 namespace itk {
00024 namespace Statistics {
00025
00091 class ITK_EXPORT NormalVariateGenerator :
00092 public RandomVariateGeneratorBase
00093 {
00094 public:
00096 typedef NormalVariateGenerator Self ;
00097 typedef RandomVariateGeneratorBase Superclass;
00098 typedef SmartPointer<Self> Pointer;
00099 typedef SmartPointer<const Self> ConstPointer;
00100
00102 itkTypeMacro(NormalVariateGenerator,
00103 RandomVariateGeneratorBase );
00104
00106 itkNewMacro(Self);
00107
00109 void Initialize(int randomSeed) ;
00110
00112 double GetVariate() ;
00113
00114 protected:
00115 NormalVariateGenerator() ;
00116 virtual ~NormalVariateGenerator() ;
00117 virtual void PrintSelf(std::ostream& os, Indent indent) const ;
00118
00120 double FastNorm (void) ;
00121
00122 private:
00123 double Scale ;
00124 double Rscale ;
00125 double Rcons ;
00126 int ELEN ;
00127 int LEN ;
00128 int LMASK ;
00129 int TLEN ;
00130
00131 int gaussfaze, *gausssave;
00132 double GScale;
00133
00134 int* vec1 ;
00135 int nslew;
00136 int irs, lseed;
00137 double chic1, chic2, actualRSD;
00138 } ;
00139
00140 }
00141 }
00142 #endif