15static long double ErrorFun(
double p);
18 unsigned long *uSeed,
unsigned long *uSeed1,
double* args)
20 double fFirstArg = 0.0;
21 double fSecondArg = 0.0;
23 double fRandomNumber = 0.0;
26 switch (nDistributionType)
30 nRandOut =
fnRandomNo(10000000, &fRand, uSeed, uSeed1);
31 fRandomNumber = (double) (fRand);
32 fFirstArg = 1 / fFirstArg;
33 *fDistOut = (double) -(1 / fFirstArg)
34 * (double) logl(1 - fRandomNumber);
40 nRandOut =
fnRandomNo(10000000, &fRand, uSeed, uSeed1);
41 fRandomNumber = (double) (fRand);
42 *fDistOut = fFirstArg + (fSecondArg - fFirstArg) * fRandomNumber;
47 nRandOut =
fnRandomNo(10000000, &fRand, uSeed, uSeed1);
48 fRandomNumber = (double) (fRand);
49 if (0 <= fRandomNumber && fRandomNumber <= 0.5) {
50 *fDistOut = (double) sqrt(2 * (
double) fRandomNumber);
51 }
else if (fRandomNumber > 0.5 && fRandomNumber <= 1) {
52 *fDistOut = 2 - (double) sqrt(2 * (1 - (
double) fRandomNumber));
58 nRandOut =
fnRandomNo(10000000, &fRand, uSeed, uSeed1);
59 fRandomNumber = (double) (fRand);
60 *fDistOut = (fFirstArg * (double) pow((-(
double) logl(1 - (1
61 - fRandomNumber))), 1 / fSecondArg));
65 *fDistOut = fFirstArg;
74 nRandOut =
fnRandomNo(10000000, &fRand, uSeed, uSeed1);
75 fRandomNumber = (double) (fRand);
76 *fDistOut = (double) (fFirstArg + fSecondArg * sqrt(2) *
ErrorFun(2
77 * fRandomNumber - 1));
85 return (1.0968 * (sqrt(3.1415) * 0.5 * (p + (3.1415 * pow(p, 3)) / 12 + (7
86 * pow(3.1415, 2) * pow(p, 5)) / 480 + (127 * pow(3.1415, 3) * pow(
int fnRandomNo(long lm, double *fRandNo, unsigned long *uSeed, unsigned long *uSeed1)
int fnDistribution(DISTRIBUTION nDistributionType, double *fDistOut, unsigned long *uSeed, unsigned long *uSeed1, double *args)
static long double ErrorFun(double p)
#define _declspec(dllexport)
This function is used to trigger the update.
@ Distribution_Triangular
@ Distribution_Exponential
enum enum_Distribution DISTRIBUTION