00001 #pragma once 00002 #ifndef SOBOL_H 00003 #define SOBOL_H 00004 00005 #include "./RandomGenerator.h" 00006 #include "../../common/types.h" 00007 #include <valarray> 00008 using namespace std; 00009 00010 const Natural MAXBIT=30,MAXDIM=6; 00011 00012 class Sobol : 00013 public RandomGenerator 00014 { 00015 public: 00017 Sobol(LongNatural Seed_=0); 00018 ~Sobol(); 00019 00020 void sobseq(Integer *n, Real x[]); 00021 00023 LongNatural GetOneRandomInteger(); 00024 00026 Real getUniform(); 00027 00029 void SetSeed(LongNatural Seed); 00030 00032 VeryLongNatural Max(); 00034 LongNatural Min(); 00035 00036 private: 00037 LongNatural Seed; 00038 Integer n_; 00039 Real x_[MAXDIM+1]; 00040 }; 00041 00042 #endif