// @(#)root/mathmore:$Id$
// Author: L. Moneta, A. Zsenei   08/2005

 /**********************************************************************
  *                                                                    *
  * Copyright (c) 2004 ROOT Foundation,  CERN/PH-SFT                   *
  *                                                                    *
  * This library is free software; you can redistribute it and/or      *
  * modify it under the terms of the GNU General Public License        *
  * as published by the Free Software Foundation; either version 2     *
  * of the License, or (at your option) any later version.             *
  *                                                                    *
  * This library is distributed in the hope that it will be useful,    *
  * but WITHOUT ANY WARRANTY; without even the implied warranty of     *
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU   *
  * General Public License for more details.                           *
  *                                                                    *
  * You should have received a copy of the GNU General Public License  *
  * along with this library (see file COPYING); if not, write          *
  * to the Free Software Foundation, Inc., 59 Temple Place, Suite      *
  * 330, Boston, MA 02111-1307 USA, or contact the author.             *
  *                                                                    *
  **********************************************************************/

// Header file for class GSLRandom
//
// Created by: moneta  at Sun Nov 21 16:26:03 2004
//
// Last update: Sun Nov 21 16:26:03 2004
//
#ifndef ROOT_Math_GSLRndmEngines
#define ROOT_Math_GSLRndmEngines

#include <string>
#include <vector>

namespace ROOT {
namespace Math {


   class GSLRngWrapper;

   //_________________________________________________________________
   /**
      GSLRandomEngine
      Base class for all GSL random engines,
      normally user instantiate the derived classes
      which creates internally the generator.

      The main GSL generators (see
      <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Random-number-generator-algorithms.html">
      here</A>) are available as derived classes
      In addition to generate uniform numbers it provides method for
      generating numbers according to pre-defined distributions
      using the GSL functions from
      <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Random-Number-Distributions.html">
      GSL random number distributions</A>.



      @ingroup Random
   */
   class GSLRandomEngine {

   public:

     /**
         default constructor. No creation of rng is done.
         If then Initialize() is called an engine is created
         based on default GSL type (MT)
     */
      GSLRandomEngine();

      /**
          create from an existing rng.
          User manage the rng pointer which is then deleted olny by calling Terminate()
      */
      GSLRandomEngine( GSLRngWrapper * rng);

      /**
         Copy constructor : clone the contained GSL generator
       */
      GSLRandomEngine(const GSLRandomEngine & eng);

      /**
         Assignment operator : make a deep copy of the contained GSL generator
       */
      GSLRandomEngine & operator=(const GSLRandomEngine & eng);

      /**
         initialize the generator
         If no rng is present the default one based on Mersenne and Twister is created
       */
      void Initialize();

      /**
         delete pointer to contained rng
       */
      void Terminate();

      /**
         call Terminate()
      */
      virtual ~GSLRandomEngine();

      /**
         Generate a  random number between ]0,1]
         0 is excluded and 1 is included
      */
      double operator() () const;

      /**
          Generate an integer number between [0,max-1] (including 0 and max-1)
          if max is larger than available range of algorithm
          an error message is printed and zero is returned
      */
      unsigned int RndmInt(unsigned int max) const;

      /**
         Generate an array of random numbers.
         The iterators points to the random numbers
      */
      template<class Iterator>
      void RandomArray(Iterator begin, Iterator end) const {
         for ( Iterator itr = begin; itr != end; ++itr ) {
            *itr = this->operator()();
         }
      }

      /**
         Generate an array of random numbers
         The iterators points to the random numbers
      */
      void RandomArray(double * begin, double * end) const;

      /**
         return name of generator
      */
      std::string Name() const;

      /**
         return the state size of generator
      */
      unsigned int Size() const;

      /**
          set the random generator seed
      */
      void SetSeed(unsigned int seed) const;


      /** @name Random Distributions
          Implemented using the
          <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Random-Number-Distributions.html">
          GSL Random number Distributions</A>
      **/
      //@{
      /**
         Gaussian distribution - default method is Box-Muller (polar method)
      */
      double Gaussian(double sigma) const;

      /**
         Gaussian distribution - Ziggurat method
      */
      double GaussianZig(double sigma) const;

      /**
         Gaussian distribution - Ratio method
      */
      double GaussianRatio(double sigma) const;
      /**
         Gaussian Tail distribution
      */
      double GaussianTail(double a, double sigma) const;

      /**
         Bivariate Gaussian distribution with correlation
      */
      void Gaussian2D(double sigmaX, double sigmaY, double rho, double &x, double &y) const;

      /**
         Exponential distribution
      */
      double Exponential(double mu) const;

      /**
         Cauchy distribution
      */
      double Cauchy(double a) const;

      /**
         Landau distribution
      */
      double Landau() const;

      /**
         Gamma distribution
      */
      double Gamma(double a, double b) const;

      /**
         Log Normal distribution
      */
      double LogNormal(double zeta, double sigma) const;

      /**
         Chi square distribution
      */
      double ChiSquare(double nu) const;

      /**
         F distrbution
      */
      double FDist(double nu1, double nu2) const;

      /**
         t student distribution
      */
      double tDist(double nu) const;

      /**
         generate random numbers in a 2D circle of radious 1
      */
      void Dir2D(double &x, double &y) const;

      /**
         generate random numbers in a 3D sphere of radious 1
      */
      void Dir3D(double &x, double &y, double &z) const;

      /**
         Poisson distribution
      */
      unsigned int Poisson(double mu) const;

      /**
         Binomial distribution
      */
      unsigned int Binomial(double p, unsigned int n) const;

      /**
         Negative Binomial distribution
      */
      unsigned int NegativeBinomial(double p, double n) const;

      /**
         Multinomial distribution
      */
      std::vector<unsigned int> Multinomial( unsigned int ntot, const std::vector<double> & p ) const;

      //@}



   protected:

      /// internal method used by the derived class to set the type of generators
      void SetType(GSLRngWrapper * r) {
         fRng = r;
      }

   private:

      GSLRngWrapper * fRng;                // pointer to GSL generator wrapper (managed by the class)
      mutable unsigned int  fCurTime;      // current time used to seed the generator


   };

   //_____________________________________________________________________________________
   /**
      Mersenne-Twister generator
      gsl_rng_mt19937 from
      <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Random-number-generator-algorithms.html">here</A>


      @ingroup Random
   */
   class GSLRngMT : public GSLRandomEngine {
   public:
      GSLRngMT();
   };

   //_____________________________________________________________________________________
   /**
      Old Ranlux generator (James, Luscher) (default luxury level, p = 223)
      (This is eequivalent to TRandom1 with default luxury level)
      see <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Random-number-generator-algorithms.html">here</A>

      @ingroup Random
   */
   class GSLRngRanLux : public GSLRandomEngine {
   public:
      GSLRngRanLux();
   };

   //_____________________________________________________________________________________
   /**
      Second generation of Ranlux generator for single precision with  luxury level of 1
      (It throws away 202 values for every 12 used)
      see <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Random-number-generator-algorithms.html">here</A>

      @ingroup Random
   */
   class GSLRngRanLuxS1 : public GSLRandomEngine {
   public:
      GSLRngRanLuxS1();
   };
   typedef GSLRngRanLuxS1 GSLRngRanLux1; // for backward compatibility

   //_____________________________________________________________________________________
   /**
      Second generation of Ranlux generator for Single precision with  luxury level of 2
      (It throws away 397 value for every 12 used)
      see <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Random-number-generator-algorithms.html">here</A>

      @ingroup Random
   */
   class GSLRngRanLuxS2 : public GSLRandomEngine {
   public:
      GSLRngRanLuxS2();
   };
   typedef GSLRngRanLuxS2 GSLRngRanLux2; // for backward compatibility

   //_____________________________________________________________________________________
   /**
      Double precision (48 bits) version of Second generation of Ranlux generator with  luxury level of 1
      (It throws away 202 value for every 12 used)
      see <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Random-number-generator-algorithms.html">here</A>

      @ingroup Random
   */
   class GSLRngRanLuxD1 : public GSLRandomEngine {
   public:
      GSLRngRanLuxD1();
   };

   //_____________________________________________________________________________________
   /**
      Double precision (48 bits) version of Second generation of Ranlux generator with  luxury level of 2
      (It throws away 397 value for every 12 used)
      see <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Random-number-generator-algorithms.html">here</A>

      @ingroup Random
   */
   class GSLRngRanLuxD2 : public GSLRandomEngine {
   public:
      GSLRngRanLuxD2();
   };
   typedef GSLRngRanLuxD2 GSLRngRanLux48; // for backward compatibility


   //_____________________________________________________________________________________
   /**
      Tausworthe generator by L'Ecuyer
      see <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Random-number-generator-algorithms.html">here</A>

      @ingroup Random
   */
   class GSLRngTaus : public GSLRandomEngine {
   public:
      GSLRngTaus();
   };

   //_____________________________________________________________________________________
   /**
      Lagged Fibonacci generator by Ziff
      see <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Random-number-generator-algorithms.html">here</A>

      @ingroup Random
   */
   class GSLRngGFSR4 : public GSLRandomEngine {
   public:
      GSLRngGFSR4();
   };

   //_____________________________________________________________________________________
   /**
      Combined multiple recursive  generator (L'Ecuyer)
      see <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Random-number-generator-algorithms.html">here</A>

      @ingroup Random
   */
   class GSLRngCMRG : public GSLRandomEngine {
   public:
      GSLRngCMRG();
   };

   //_____________________________________________________________________________________
   /**
      5-th order multiple recursive  generator (L'Ecuyer, Blouin and Coutre)
      see <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Random-number-generator-algorithms.html">here</A>

      @ingroup Random
   */
   class GSLRngMRG : public GSLRandomEngine {
   public:
      GSLRngMRG();
   };

   //_____________________________________________________________________________________
   /**
      BSD rand() generator
      gsl_rmg_rand from
      <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Unix-random-number-generators.html">here</A>

      @ingroup Random
   */
   class GSLRngRand : public GSLRandomEngine {
   public:
      GSLRngRand();
   };

   //_____________________________________________________________________________________
   /**
      RANMAR generator
      see <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Unix-random-number-generators.html">here</A>

      @ingroup Random
   */
   class GSLRngRanMar : public GSLRandomEngine {
   public:
      GSLRngRanMar();
   };

   //_____________________________________________________________________________________
   /**
      MINSTD generator (Park and Miller)
      see <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Unix-random-number-generators.html">here</A>

      @ingroup Random
   */
   class GSLRngMinStd : public GSLRandomEngine {
   public:
      GSLRngMinStd();
   };




} // namespace Math
} // namespace ROOT


#endif /* ROOT_Math_GSLRndmEngines */

 GSLRndmEngines.h:1
 GSLRndmEngines.h:2
 GSLRndmEngines.h:3
 GSLRndmEngines.h:4
 GSLRndmEngines.h:5
 GSLRndmEngines.h:6
 GSLRndmEngines.h:7
 GSLRndmEngines.h:8
 GSLRndmEngines.h:9
 GSLRndmEngines.h:10
 GSLRndmEngines.h:11
 GSLRndmEngines.h:12
 GSLRndmEngines.h:13
 GSLRndmEngines.h:14
 GSLRndmEngines.h:15
 GSLRndmEngines.h:16
 GSLRndmEngines.h:17
 GSLRndmEngines.h:18
 GSLRndmEngines.h:19
 GSLRndmEngines.h:20
 GSLRndmEngines.h:21
 GSLRndmEngines.h:22
 GSLRndmEngines.h:23
 GSLRndmEngines.h:24
 GSLRndmEngines.h:25
 GSLRndmEngines.h:26
 GSLRndmEngines.h:27
 GSLRndmEngines.h:28
 GSLRndmEngines.h:29
 GSLRndmEngines.h:30
 GSLRndmEngines.h:31
 GSLRndmEngines.h:32
 GSLRndmEngines.h:33
 GSLRndmEngines.h:34
 GSLRndmEngines.h:35
 GSLRndmEngines.h:36
 GSLRndmEngines.h:37
 GSLRndmEngines.h:38
 GSLRndmEngines.h:39
 GSLRndmEngines.h:40
 GSLRndmEngines.h:41
 GSLRndmEngines.h:42
 GSLRndmEngines.h:43
 GSLRndmEngines.h:44
 GSLRndmEngines.h:45
 GSLRndmEngines.h:46
 GSLRndmEngines.h:47
 GSLRndmEngines.h:48
 GSLRndmEngines.h:49
 GSLRndmEngines.h:50
 GSLRndmEngines.h:51
 GSLRndmEngines.h:52
 GSLRndmEngines.h:53
 GSLRndmEngines.h:54
 GSLRndmEngines.h:55
 GSLRndmEngines.h:56
 GSLRndmEngines.h:57
 GSLRndmEngines.h:58
 GSLRndmEngines.h:59
 GSLRndmEngines.h:60
 GSLRndmEngines.h:61
 GSLRndmEngines.h:62
 GSLRndmEngines.h:63
 GSLRndmEngines.h:64
 GSLRndmEngines.h:65
 GSLRndmEngines.h:66
 GSLRndmEngines.h:67
 GSLRndmEngines.h:68
 GSLRndmEngines.h:69
 GSLRndmEngines.h:70
 GSLRndmEngines.h:71
 GSLRndmEngines.h:72
 GSLRndmEngines.h:73
 GSLRndmEngines.h:74
 GSLRndmEngines.h:75
 GSLRndmEngines.h:76
 GSLRndmEngines.h:77
 GSLRndmEngines.h:78
 GSLRndmEngines.h:79
 GSLRndmEngines.h:80
 GSLRndmEngines.h:81
 GSLRndmEngines.h:82
 GSLRndmEngines.h:83
 GSLRndmEngines.h:84
 GSLRndmEngines.h:85
 GSLRndmEngines.h:86
 GSLRndmEngines.h:87
 GSLRndmEngines.h:88
 GSLRndmEngines.h:89
 GSLRndmEngines.h:90
 GSLRndmEngines.h:91
 GSLRndmEngines.h:92
 GSLRndmEngines.h:93
 GSLRndmEngines.h:94
 GSLRndmEngines.h:95
 GSLRndmEngines.h:96
 GSLRndmEngines.h:97
 GSLRndmEngines.h:98
 GSLRndmEngines.h:99
 GSLRndmEngines.h:100
 GSLRndmEngines.h:101
 GSLRndmEngines.h:102
 GSLRndmEngines.h:103
 GSLRndmEngines.h:104
 GSLRndmEngines.h:105
 GSLRndmEngines.h:106
 GSLRndmEngines.h:107
 GSLRndmEngines.h:108
 GSLRndmEngines.h:109
 GSLRndmEngines.h:110
 GSLRndmEngines.h:111
 GSLRndmEngines.h:112
 GSLRndmEngines.h:113
 GSLRndmEngines.h:114
 GSLRndmEngines.h:115
 GSLRndmEngines.h:116
 GSLRndmEngines.h:117
 GSLRndmEngines.h:118
 GSLRndmEngines.h:119
 GSLRndmEngines.h:120
 GSLRndmEngines.h:121
 GSLRndmEngines.h:122
 GSLRndmEngines.h:123
 GSLRndmEngines.h:124
 GSLRndmEngines.h:125
 GSLRndmEngines.h:126
 GSLRndmEngines.h:127
 GSLRndmEngines.h:128
 GSLRndmEngines.h:129
 GSLRndmEngines.h:130
 GSLRndmEngines.h:131
 GSLRndmEngines.h:132
 GSLRndmEngines.h:133
 GSLRndmEngines.h:134
 GSLRndmEngines.h:135
 GSLRndmEngines.h:136
 GSLRndmEngines.h:137
 GSLRndmEngines.h:138
 GSLRndmEngines.h:139
 GSLRndmEngines.h:140
 GSLRndmEngines.h:141
 GSLRndmEngines.h:142
 GSLRndmEngines.h:143
 GSLRndmEngines.h:144
 GSLRndmEngines.h:145
 GSLRndmEngines.h:146
 GSLRndmEngines.h:147
 GSLRndmEngines.h:148
 GSLRndmEngines.h:149
 GSLRndmEngines.h:150
 GSLRndmEngines.h:151
 GSLRndmEngines.h:152
 GSLRndmEngines.h:153
 GSLRndmEngines.h:154
 GSLRndmEngines.h:155
 GSLRndmEngines.h:156
 GSLRndmEngines.h:157
 GSLRndmEngines.h:158
 GSLRndmEngines.h:159
 GSLRndmEngines.h:160
 GSLRndmEngines.h:161
 GSLRndmEngines.h:162
 GSLRndmEngines.h:163
 GSLRndmEngines.h:164
 GSLRndmEngines.h:165
 GSLRndmEngines.h:166
 GSLRndmEngines.h:167
 GSLRndmEngines.h:168
 GSLRndmEngines.h:169
 GSLRndmEngines.h:170
 GSLRndmEngines.h:171
 GSLRndmEngines.h:172
 GSLRndmEngines.h:173
 GSLRndmEngines.h:174
 GSLRndmEngines.h:175
 GSLRndmEngines.h:176
 GSLRndmEngines.h:177
 GSLRndmEngines.h:178
 GSLRndmEngines.h:179
 GSLRndmEngines.h:180
 GSLRndmEngines.h:181
 GSLRndmEngines.h:182
 GSLRndmEngines.h:183
 GSLRndmEngines.h:184
 GSLRndmEngines.h:185
 GSLRndmEngines.h:186
 GSLRndmEngines.h:187
 GSLRndmEngines.h:188
 GSLRndmEngines.h:189
 GSLRndmEngines.h:190
 GSLRndmEngines.h:191
 GSLRndmEngines.h:192
 GSLRndmEngines.h:193
 GSLRndmEngines.h:194
 GSLRndmEngines.h:195
 GSLRndmEngines.h:196
 GSLRndmEngines.h:197
 GSLRndmEngines.h:198
 GSLRndmEngines.h:199
 GSLRndmEngines.h:200
 GSLRndmEngines.h:201
 GSLRndmEngines.h:202
 GSLRndmEngines.h:203
 GSLRndmEngines.h:204
 GSLRndmEngines.h:205
 GSLRndmEngines.h:206
 GSLRndmEngines.h:207
 GSLRndmEngines.h:208
 GSLRndmEngines.h:209
 GSLRndmEngines.h:210
 GSLRndmEngines.h:211
 GSLRndmEngines.h:212
 GSLRndmEngines.h:213
 GSLRndmEngines.h:214
 GSLRndmEngines.h:215
 GSLRndmEngines.h:216
 GSLRndmEngines.h:217
 GSLRndmEngines.h:218
 GSLRndmEngines.h:219
 GSLRndmEngines.h:220
 GSLRndmEngines.h:221
 GSLRndmEngines.h:222
 GSLRndmEngines.h:223
 GSLRndmEngines.h:224
 GSLRndmEngines.h:225
 GSLRndmEngines.h:226
 GSLRndmEngines.h:227
 GSLRndmEngines.h:228
 GSLRndmEngines.h:229
 GSLRndmEngines.h:230
 GSLRndmEngines.h:231
 GSLRndmEngines.h:232
 GSLRndmEngines.h:233
 GSLRndmEngines.h:234
 GSLRndmEngines.h:235
 GSLRndmEngines.h:236
 GSLRndmEngines.h:237
 GSLRndmEngines.h:238
 GSLRndmEngines.h:239
 GSLRndmEngines.h:240
 GSLRndmEngines.h:241
 GSLRndmEngines.h:242
 GSLRndmEngines.h:243
 GSLRndmEngines.h:244
 GSLRndmEngines.h:245
 GSLRndmEngines.h:246
 GSLRndmEngines.h:247
 GSLRndmEngines.h:248
 GSLRndmEngines.h:249
 GSLRndmEngines.h:250
 GSLRndmEngines.h:251
 GSLRndmEngines.h:252
 GSLRndmEngines.h:253
 GSLRndmEngines.h:254
 GSLRndmEngines.h:255
 GSLRndmEngines.h:256
 GSLRndmEngines.h:257
 GSLRndmEngines.h:258
 GSLRndmEngines.h:259
 GSLRndmEngines.h:260
 GSLRndmEngines.h:261
 GSLRndmEngines.h:262
 GSLRndmEngines.h:263
 GSLRndmEngines.h:264
 GSLRndmEngines.h:265
 GSLRndmEngines.h:266
 GSLRndmEngines.h:267
 GSLRndmEngines.h:268
 GSLRndmEngines.h:269
 GSLRndmEngines.h:270
 GSLRndmEngines.h:271
 GSLRndmEngines.h:272
 GSLRndmEngines.h:273
 GSLRndmEngines.h:274
 GSLRndmEngines.h:275
 GSLRndmEngines.h:276
 GSLRndmEngines.h:277
 GSLRndmEngines.h:278
 GSLRndmEngines.h:279
 GSLRndmEngines.h:280
 GSLRndmEngines.h:281
 GSLRndmEngines.h:282
 GSLRndmEngines.h:283
 GSLRndmEngines.h:284
 GSLRndmEngines.h:285
 GSLRndmEngines.h:286
 GSLRndmEngines.h:287
 GSLRndmEngines.h:288
 GSLRndmEngines.h:289
 GSLRndmEngines.h:290
 GSLRndmEngines.h:291
 GSLRndmEngines.h:292
 GSLRndmEngines.h:293
 GSLRndmEngines.h:294
 GSLRndmEngines.h:295
 GSLRndmEngines.h:296
 GSLRndmEngines.h:297
 GSLRndmEngines.h:298
 GSLRndmEngines.h:299
 GSLRndmEngines.h:300
 GSLRndmEngines.h:301
 GSLRndmEngines.h:302
 GSLRndmEngines.h:303
 GSLRndmEngines.h:304
 GSLRndmEngines.h:305
 GSLRndmEngines.h:306
 GSLRndmEngines.h:307
 GSLRndmEngines.h:308
 GSLRndmEngines.h:309
 GSLRndmEngines.h:310
 GSLRndmEngines.h:311
 GSLRndmEngines.h:312
 GSLRndmEngines.h:313
 GSLRndmEngines.h:314
 GSLRndmEngines.h:315
 GSLRndmEngines.h:316
 GSLRndmEngines.h:317
 GSLRndmEngines.h:318
 GSLRndmEngines.h:319
 GSLRndmEngines.h:320
 GSLRndmEngines.h:321
 GSLRndmEngines.h:322
 GSLRndmEngines.h:323
 GSLRndmEngines.h:324
 GSLRndmEngines.h:325
 GSLRndmEngines.h:326
 GSLRndmEngines.h:327
 GSLRndmEngines.h:328
 GSLRndmEngines.h:329
 GSLRndmEngines.h:330
 GSLRndmEngines.h:331
 GSLRndmEngines.h:332
 GSLRndmEngines.h:333
 GSLRndmEngines.h:334
 GSLRndmEngines.h:335
 GSLRndmEngines.h:336
 GSLRndmEngines.h:337
 GSLRndmEngines.h:338
 GSLRndmEngines.h:339
 GSLRndmEngines.h:340
 GSLRndmEngines.h:341
 GSLRndmEngines.h:342
 GSLRndmEngines.h:343
 GSLRndmEngines.h:344
 GSLRndmEngines.h:345
 GSLRndmEngines.h:346
 GSLRndmEngines.h:347
 GSLRndmEngines.h:348
 GSLRndmEngines.h:349
 GSLRndmEngines.h:350
 GSLRndmEngines.h:351
 GSLRndmEngines.h:352
 GSLRndmEngines.h:353
 GSLRndmEngines.h:354
 GSLRndmEngines.h:355
 GSLRndmEngines.h:356
 GSLRndmEngines.h:357
 GSLRndmEngines.h:358
 GSLRndmEngines.h:359
 GSLRndmEngines.h:360
 GSLRndmEngines.h:361
 GSLRndmEngines.h:362
 GSLRndmEngines.h:363
 GSLRndmEngines.h:364
 GSLRndmEngines.h:365
 GSLRndmEngines.h:366
 GSLRndmEngines.h:367
 GSLRndmEngines.h:368
 GSLRndmEngines.h:369
 GSLRndmEngines.h:370
 GSLRndmEngines.h:371
 GSLRndmEngines.h:372
 GSLRndmEngines.h:373
 GSLRndmEngines.h:374
 GSLRndmEngines.h:375
 GSLRndmEngines.h:376
 GSLRndmEngines.h:377
 GSLRndmEngines.h:378
 GSLRndmEngines.h:379
 GSLRndmEngines.h:380
 GSLRndmEngines.h:381
 GSLRndmEngines.h:382
 GSLRndmEngines.h:383
 GSLRndmEngines.h:384
 GSLRndmEngines.h:385
 GSLRndmEngines.h:386
 GSLRndmEngines.h:387
 GSLRndmEngines.h:388
 GSLRndmEngines.h:389
 GSLRndmEngines.h:390
 GSLRndmEngines.h:391
 GSLRndmEngines.h:392
 GSLRndmEngines.h:393
 GSLRndmEngines.h:394
 GSLRndmEngines.h:395
 GSLRndmEngines.h:396
 GSLRndmEngines.h:397
 GSLRndmEngines.h:398
 GSLRndmEngines.h:399
 GSLRndmEngines.h:400
 GSLRndmEngines.h:401
 GSLRndmEngines.h:402
 GSLRndmEngines.h:403
 GSLRndmEngines.h:404
 GSLRndmEngines.h:405
 GSLRndmEngines.h:406
 GSLRndmEngines.h:407
 GSLRndmEngines.h:408
 GSLRndmEngines.h:409
 GSLRndmEngines.h:410
 GSLRndmEngines.h:411
 GSLRndmEngines.h:412
 GSLRndmEngines.h:413
 GSLRndmEngines.h:414
 GSLRndmEngines.h:415
 GSLRndmEngines.h:416
 GSLRndmEngines.h:417
 GSLRndmEngines.h:418
 GSLRndmEngines.h:419
 GSLRndmEngines.h:420
 GSLRndmEngines.h:421
 GSLRndmEngines.h:422
 GSLRndmEngines.h:423
 GSLRndmEngines.h:424
 GSLRndmEngines.h:425
 GSLRndmEngines.h:426
 GSLRndmEngines.h:427
 GSLRndmEngines.h:428
 GSLRndmEngines.h:429
 GSLRndmEngines.h:430
 GSLRndmEngines.h:431
 GSLRndmEngines.h:432
 GSLRndmEngines.h:433
 GSLRndmEngines.h:434
 GSLRndmEngines.h:435
 GSLRndmEngines.h:436
 GSLRndmEngines.h:437
 GSLRndmEngines.h:438
 GSLRndmEngines.h:439
 GSLRndmEngines.h:440
 GSLRndmEngines.h:441
 GSLRndmEngines.h:442
 GSLRndmEngines.h:443
 GSLRndmEngines.h:444
 GSLRndmEngines.h:445
 GSLRndmEngines.h:446
 GSLRndmEngines.h:447