Die EbsScript-Unit @Random enthält Funktionen zum Erzeugen diverser Zufallsverteilungen, u.a.
Name |
Zweck |
Arguments |
Return value |
Example |
rndUniformIntegerDistribution |
Funktion erzeugt eine uniform verteilte Integer Zufallszahl im Bereich [minimum, maximum] |
1: INTEGER: minimum |
INTEGER: |
|
rndUniformRealDistribution
|
Funktion erzeugt eine uniform verteilte Real Zufallszahl im Bereich [minimum, maximum] |
1: REAL: minimum |
REAL: |
|
rndNormalDistribution
|
Funktion erzeugt eine Normalverteilte Real Zufallszahl mit Mittelwert mean und Standardabweichung stddef |
1: REAL: mean
|
REAL: |
Die Funktionen orientieren sich an den entsprechenden C++ Klassen (siehe http://en.cppreference.com/w/cpp/numeric/random ) und verwenden alle einen 64-Bit Mersenne Twister Algorithmus (mt19937_64 von Matsumoto und Nishimura, 2000) als Generator.
Die komplette Liste umfasst:
Uniform distributions:
function rndUniformIntegerDistribution(minimum:integer = 0; maximum:integer = 2147483647):integer; internal;
function rndUniformRealDistribution(minimum:real = 0; maximum:real = 1):real; internal;
Bernoulli distributions:
function rndBernoulliDistribution(p_true:real = 0.5):Boolean; internal;
function rndBinomialDistribution(trials:integer = 1; p_true:real = 0.5):integer; internal;
function rndnegativeBinomialDistribution(fail_trials:integer = 1; p_true:real = 0.5):integer; internal;
function rndGeometricDistribution(p_true:real = 0.5):integer; internal;
Poisson distributions:
function rndPoissonDistribution(mean:real = 1.0):integer; internal;
function rndExponentialDistribution(lambda:real = 1.0):real; internal;
function rndGammaDistribution(alpha:real = 1.0; beta:real = 1.0):real; internal;
function rndWeibullDistribution(a:real = 1.0; b:real = 1.0):real; internal;
function rndExtremeValueDistribution(a:real = 0.0; b:real = 1.0):real; internal;
Normal distributions:
function rndNormalDistribution(mean:real = 0.0; stddev:real = 1.0):real; internal;
function rndLognormalDistribution(m:real = 0.0; shape:real = 1.0):real; internal;
function rndChiSquaredDistribution(n:real = 1.0):real; internal;
function rndCauchyDistribution(a:real = 0.0; b:real = 1.0):real; internal;
function rndFisherFDistribution(m:real = 1.0; n:real = 1.0):real; internal;
function rndStudentTDistribution(n:real = 1.0):real; internal;