SourcePro® API Reference Guide

 
Loading...
Searching...
No Matches
RWTRandExponential< Generator > Class Template Reference

Used to generate random numbers from an exponential distribution. More...

#include <rw/rand.h>

Inheritance diagram for RWTRandExponential< Generator >:
RWTRand< Generator > RWRandInterface

Public Member Functions

 RWTRandExponential (const Generator &g, double lam=1)
 
 RWTRandExponential (const RWTRandExponential< Generator > &g)
 
 RWTRandExponential (double lam=1)
 
double highBound () const
 
double lambda () const
 
double lowBound () const
 
virtual double operator() ()
 
virtual size_t operator() (double *out, size_t n)
 
void setLambda (double l)
 
- Public Member Functions inherited from RWTRand< Generator >
 RWTRand ()
 
 RWTRand (const Generator &g)
 
 RWTRand (const RWTRand< Generator > &x)
 
Generator & generator ()
 
const Generator & generator () const
 
void setGenerator (const Generator &x)
 
void setGenerator (const RWTRand< Generator > &x)
 

Detailed Description

template<class Generator>
class RWTRandExponential< Generator >

Class RWTRandExponential generates random numbers from an exponential distribution:

\[ g(w) = \left\{\begin{matrix} \lambda e^{-\lambda \omega } , & 0 < w \\ 0 \hfill, & w \leq 0 \end{matrix}\right. \]

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 exponentially distributed random numbers may be changed by varying the Generator template parameter responsible for generating these 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.

Synopsis
#include <rw/rand.h>
Used to generate random numbers from an exponential distribution.
Definition rand.h:484
Example
#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 an exponential generator with lambda = 4.5
// using the above uniform generator.
// Create an exponential generator with lambda = 1 using class
// RWRandGenerator.
// Create an exponential generator with lambda 3.14 using
// a class MyDoubleRand to generate the uniform [0, 1] deviates.
// Print a few values.
for (int j = 0; j < 10; j++) {
cout << "exponential lambda = 4.5 = " << exp();
cout << "\nexponential lambda = 1 = " << expOne();
cout << "\nexponential lambda = 3.14 = " << myExp() << endl;
}
// Restart one of the generators with another seed value
// using the RWRandGenerator method restart().
(expOne.generator()).restart(654321L);
return 0;
}
Generates random numbers uniformly distributed over the interval [0, 1].
Definition randgen.h:61
const Generator & generator() const
Definition rand.h:131

Constructor & Destructor Documentation

◆ RWTRandExponential() [1/3]

template<class Generator >
RWTRandExponential< Generator >::RWTRandExponential ( double lam = 1)

Constructs a generator with lambda = lam.

◆ RWTRandExponential() [2/3]

template<class Generator >
RWTRandExponential< Generator >::RWTRandExponential ( const RWTRandExponential< Generator > & g)

Constructs self as a copy of g.

◆ RWTRandExponential() [3/3]

template<class Generator >
RWTRandExponential< Generator >::RWTRandExponential ( const Generator & g,
double lam = 1 )

Constructs a generator with underlying uniform [0, 1] generator g lambda=lam.

Member Function Documentation

◆ highBound()

template<class Generator >
double RWTRandExponential< Generator >::highBound ( ) const

Returns the upper bound of 99% of the distribution.

◆ lambda()

template<class Generator >
double RWTRandExponential< Generator >::lambda ( ) const
inline

Returns the value of lambda for the distribution.

◆ lowBound()

template<class Generator >
double RWTRandExponential< Generator >::lowBound ( ) const

Returns the lower bound of 99% of the distribution.

◆ operator()() [1/2]

template<class Generator >
virtual double RWTRandExponential< Generator >::operator() ( )
virtual

Returns the next random number in the sequence.

Implements RWRandInterface.

◆ operator()() [2/2]

template<class Generator >
virtual size_t RWTRandExponential< 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.

◆ setLambda()

template<class Generator >
void RWTRandExponential< Generator >::setLambda ( double l)
inline

Sets the value of lambda for the distribution to l.

Copyright © 2024 Rogue Wave Software, Inc., a Perforce company. All Rights Reserved.