1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
/*
RAND is a macro which returns a pseudo-random numbers from a uniform
distribution on the interval [0 1]
*/
#define RAND ((rand())/((double) RAND_MAX))
/*******************************************************************************
* wblrnd : returns a pseudo-random number chosen from the Weibull distribution*
* with scale parameter lambda > 0, shape parameter k > 0 and localisation *
* parameter theta *
*******************************************************************************/
EXTERN_C RISOTO_API double __stdcall wblrnd(double k,double lambda,double theta)
{
double d;
do
{
d = RAND;
}
while(d < DBL_EPSILON);
return lambda * pow(-log(d),1./k) + theta;
} |