Changeset 3599 in Sophya for trunk/SophyaLib


Ignore:
Timestamp:
Apr 22, 2009, 12:56:23 AM (16 years ago)
Author:
cmv
Message:

redimensionnement du buffer RandomGenerator, cmv 22/04/2009

Location:
trunk/SophyaLib/BaseTools
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/BaseTools/stsrand.cc

    r3408 r3599  
    5757  }
    5858}
    59  
     59
    6060
    6161RandomGenerator::~RandomGenerator(void)
    6262{
    6363  // rien a faire
     64}
     65
     66void RandomGenerator::SetBuffSize(size_t n)
     67// redimensionnement du buffer
     68{
     69  if(fg_nothrsafe) return;
     70  if (n < 1) n = 1024;
     71  rseq_.ReSize(n, false);
     72  idx_ = n;
    6473}
    6574
  • trunk/SophyaLib/BaseTools/stsrand.h

    r3389 r3599  
    2222  RandomGenerator(RandomGenerator const & rg);
    2323
     24  void SetBuffSize(size_t n);
     25
    2426  virtual ~RandomGenerator();
    2527
     
    3941  inline r_8 Flatpm1() {return 2.*Next()-1.;}
    4042
    41   /*! \brief Return a random number following a gaussian distribution (sigma=1, mean=0*/
     43  /*! \brief Return a random number following a gaussian distribution (sigma=1, mean=0)*/
    4244  virtual r_8 Gaussian();
    4345
    4446  /*! \brief Return a random number following a gaussian distribution "sigma", (mean=0)*/
    45   virtual r_8 Gaussian(double sigma)
    46     { return sigma*Gaussian(); }
     47  virtual r_8 Gaussian(double sigma)  {return sigma*Gaussian();}
    4748 /*! \brief Return a random number following a gaussian distribution with mean=mu, and sigma */
    48   virtual r_8 Gaussian(double sigma,double mu)
    49     { return sigma*Gaussian()+mu; }
     49  virtual r_8 Gaussian(double sigma,double mu) {return sigma*Gaussian()+mu;}
    5050
    5151  /*! \brief alias for Gaussian() */
    52   inline r_8 NorRand()
    53     { return Gaussian(); }
     52  inline r_8 NorRand() {return Gaussian();}
    5453
    5554  /*! \brief Return a random number following a poisson distribution with mean mu */
     
    5756 
    5857  /*! \brief Return a random number following a poisson distribution with mean mu */
    59   inline uint_8 Poisson(double mu)
    60     { return Poisson(mu, -1.); }
     58  inline uint_8 Poisson(double mu) {return Poisson(mu, -1.);}
    6159
    6260   /*! \brief Return a random number following a poisson distribution with mean mu */
    63   inline uint_8  PoissRandLimit(double mu,double mumax=10.)
    64     { return Poisson(mu, mumax); }
     61  inline uint_8  PoissRandLimit(double mu,double mumax=10.) {return Poisson(mu, mumax);}
     62
     63  /*! \brief Returns a random complex number such that real and imaginary parts are gaussians with variance sig^2 */
     64  inline complex< r_8 > ComplexGaussRan(void)
     65         {return complex< r_8 >(NorRand(),NorRand());}
     66  inline complex< r_8 > ComplexGaussRan(double sig)
     67         {return complex< r_8 >(sig*NorRand(),sig*NorRand());}
     68  /*! \brief Returns the module of a random complex number generated by ComplexGaussRan */
     69  inline double ModComplexGaussRan(double sig=1.)
     70         {double r=-log(1.-Flat01()); return sig*sqrt(2.*r);}
     71
    6572 
    6673  //  Pour la gestion de persistance PPF
Note: See TracChangeset for help on using the changeset viewer.