beta.h | beta.h | |||
---|---|---|---|---|
// -*- C++ -*- | ||||
// $Id$ | ||||
/* | /* | |||
* Generate Beta random deviate | * Generate Beta random deviate | |||
* | * | |||
* Returns a single random deviate from the beta distribution with | * Returns a single random deviate from the beta distribution with | |||
* parameters A and B. The density of the beta is | * parameters A and B. The density of the beta is | |||
* x^(a-1) * (1-x)^(b-1) / B(a,b) for 0 < x < 1 | * x^(a-1) * (1-x)^(b-1) / B(a,b) for 0 < x < 1 | |||
* | * | |||
* The mean is a/(a+b). | * The mean is a/(a+b). | |||
* The variance is ab/((a+b)^2(a+b+1)) | * The variance is ab/((a+b)^2(a+b+1)) | |||
* The rth moment is (a+r-1)^(r)/(a+b+r-1)^(r) | * The rth moment is (a+r-1)^(r)/(a+b+r-1)^(r) | |||
skipping to change at line 58 | skipping to change at line 61 | |||
template<typename T = double, typename IRNG = defaultIRNG, | template<typename T = double, typename IRNG = defaultIRNG, | |||
typename stateTag = defaultState> | typename stateTag = defaultState> | |||
class Beta : public UniformOpen<T,IRNG,stateTag> | class Beta : public UniformOpen<T,IRNG,stateTag> | |||
{ | { | |||
public: | public: | |||
typedef T T_numtype; | typedef T T_numtype; | |||
Beta(T a, T b) | Beta(T a, T b) | |||
{ | { | |||
aa = a; | setParameters(a, b); | |||
bb = b; | } | |||
infnty = 0.3 * huge(T()); | ||||
minlog = 0.085 * tiny(T()); | Beta(T a, T b, unsigned int i) : UniformOpen<T, IRNG, stateTag>(i) | |||
expmax = log(infnty); | { | |||
setParameters(a, b); | ||||
} | } | |||
T random(); | T random(); | |||
void setParameters(T a, T b) | void setParameters(T a, T b) | |||
{ | { | |||
aa = a; | aa = a; | |||
bb = b; | bb = b; | |||
infnty = 0.3 * blitz::huge(T()); | ||||
minlog = 0.085 * blitz::tiny(T()); | ||||
expmax = log(infnty); | ||||
} | } | |||
protected: | protected: | |||
T ranf() | T ranf() | |||
{ | { | |||
return UniformOpen<T,IRNG,stateTag>::random(); | return UniformOpen<T,IRNG,stateTag>::random(); | |||
} | } | |||
T aa, bb; | T aa, bb; | |||
T infnty, minlog, expmax; | T infnty, minlog, expmax; | |||
End of changes. 3 change blocks. | ||||
5 lines changed or deleted | 12 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |