SourcePro C++ 12.0 |
SourcePro® C++ API Reference Guide |
SourcePro C++ Documentation Home |
Used to generate random numbers from a gamma distribution. More...
#include <rw/rand.h>
Public Member Functions | |
RWTRandGamma (int ord=1) | |
RWTRandGamma (const RWTRandGamma< Generator > &g) | |
RWTRandGamma (const Generator &g, int ord=1) | |
virtual double | operator() () |
virtual size_t | operator() (double *out, size_t n) |
void | setOrder (int order) |
int | order () const |
Class RWTRandGamma<Generator> generates random numbers from a gamma distribution:
where a
is the order. The algorithm used to generate the random numbers begins with random numbers generated from a uniform distribution on the interval [0, 1]. Thus, the speed and statistical properties of the gamma random number generator may be varied by varying the Generator template parameter, which is responsible for generating the uniformly distributed numbers.
The class Generator must be a function object whose function call operator returns a uniform random double between 0 and 1. The class RWRandGenerator supplied with the library may be used.
#include <rw/rand.h> RWTRandGamma<Generator> gen;
#include <rw/rand.h> #include <iostream.h> #include "myrand.h" int main() { // Create a uniform generator on [0, 1] with an // initial seed value. RWRandGenerator uniform(123456L); // Create a gamma generator with order = 4 // using the above uniform generator for generator. RWTRandGamma<RWRandGenerator> gamma(uniform, 4); // Create an exponetial generator with order = 1 // using class RWRandGenerator. RWTRandGamma<RWRandGenerator> gammaOne; // Create a gamma generator with order 31 using a class // MyDoubleRand to generate the uniform [0, 1] deviates. RWTRandGamma<MyDoubleRand> myGamma(31); // Print a few values. for ( int j = 0; j < 10; j++ ) { cout << "gamma order = 4 = " << gamma(); cout << "\ngamma order = 1 = " << gammaOne(); cout << "\ngamma order = 31 = " << myGamma() << endl; } // Restart one of the generators with another seed value // using the RWRandGenerator method restart(). ( gammaOne.generator() ).restart( 654321L); return 0; }
RWTRandGamma< Generator >::RWTRandGamma | ( | int | ord = 1 |
) |
Constructs a generator with order = ord.
RWTRandGamma< Generator >::RWTRandGamma | ( | const RWTRandGamma< Generator > & | g | ) |
Constructs self as a copy of g.
RWTRandGamma< Generator >::RWTRandGamma | ( | const Generator & | g, | |
int | ord = 1 | |||
) |
Constructs a generator with underlying uniform [0, 1] generator g order = ord
.
virtual size_t RWTRandGamma< Generator >::operator() | ( | double * | out, | |
size_t | n | |||
) | [virtual] |
Assigns random numbers to n elements in out. Returns the number of random numbers generated.
Implements RWRandInterface.
virtual double RWTRandGamma< Generator >::operator() | ( | ) | [virtual] |
Returns the next random number in the sequence.
Implements RWRandInterface.
int RWTRandGamma< Generator >::order | ( | ) | const [inline] |
Returns the value of order for the distribution.
void RWTRandGamma< Generator >::setOrder | ( | int | order | ) | [inline] |
Sets the value of lamda for the distribution to l.
© Copyright Rogue Wave Software, Inc. All Rights Reserved.
Rogue Wave and SourcePro are registered trademarks of Rogue Wave Software, Inc. in the United States and other countries. All other trademarks are the property of their respective owners.
Contact Rogue Wave about documentation or support issues.