From 413da703201d8162903b7d850ebba95ab845fe8d Mon Sep 17 00:00:00 2001 From: ericzhang Date: Fri, 17 May 2013 17:51:11 +0800 Subject: [PATCH] add unittest and bugfix --- src/random.js | 5 +-- test/tests.js | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 100 insertions(+), 3 deletions(-) diff --git a/src/random.js b/src/random.js index 8d30db0..6815982 100644 --- a/src/random.js +++ b/src/random.js @@ -80,7 +80,7 @@ return a + b * log(-log(_this.uniform(0, 1))); }; - exports.fRadio = function (v, w) { + exports.fRatio = function (v, w) { return (_this.chiSquare(v) / v) / (_this.chiSquare(w) / w); }; @@ -223,7 +223,7 @@ do { x = _this.uniform(0, areaMax) / (yMax - yMin) + xMin; y = _this.uniform(yMin, yMax); - } while (y > ysf(x, xMin, xMax)); + } while (y > usf(x, xMin, xMax)); return x; }; @@ -251,6 +251,7 @@ exports.hypergeometric = function (n, N, K) { var count = 0; for (var i = 0; i < n; i++, N--) { + var p = K / N; if (_this.bernoulli(p)) { count++; K--; diff --git a/test/tests.js b/test/tests.js index b0c83aa..02d41cb 100644 --- a/test/tests.js +++ b/test/tests.js @@ -7,7 +7,103 @@ describe('Random', function () { random.arcsine(0, 1).should.be.a('number'); }); it ('should generate random number with Beta', function () { - random.arcsine(0.5, 5, 0, 3).should.be.a('number'); + random.beta(1, 1, 0, 1).should.be.a('number'); }); + it ('should generate random number with Cauchy', function () { + random.cauchy(1, 1).should.be.a('number'); + }); + it ('should generate random number with Chi-Square', function () { + random.chiSquare(1).should.be.a('number'); + }); + it ('should generate random number with Cosine', function () { + random.cosine(0, 1).should.be.a('number'); + }); + it ('should generate random number with DoubleLog', function () { + random.doubleLog(0, 1).should.be.a('number'); + }); + it ('should generate random number with Erlang', function () { + random.erlang(1, 1).should.be.a('number'); + }); + it ('should generate random number with Exponential', function () { + random.exponential(1, 1).should.be.a('number'); + }); + it ('should generate random number with ExtremeValue', function () { + random.extremeValue(0.5, 5, 0, 1).should.be.a('number'); + }); + it ('should generate random number with F Ratio', function () { + random.fRatio(1, 1).should.be.a('number'); + }); + it ('should generate random number with Gamma', function () { + random.gamma(1, 1, 1).should.be.a('number'); + }); + it ('should generate random number with Laplace', function () { + random.laplace(1, 1).should.be.a('number'); + }); + it ('should generate random number with Logarithmic', function () { + random.logarithmic(0, 1).should.be.a('number'); + }); + it ('should generate random number with Logistic', function () { + random.logistic(1, 1).should.be.a('number'); + }); + it ('should generate random number with Lognormal', function () { + random.lognormal(1, 1, 1).should.be.a('number'); + }); + it ('should generate random number with Normal', function () { + random.normal(1, 1).should.be.a('number'); + }); + it ('should generate random number with Parabolic', function () { + random.parabolic(0, 1).should.be.a('number'); + }); + it ('should generate random number with Pareto', function () { + random.pareto(1).should.be.a('number'); + }); + it ('should generate random number with Pearson5', function () { + random.pearson5(1, 1).should.be.a('number'); + }); + it ('should generate random number with Pearson6', function () { + random.pearson6(1, 1, 1).should.be.a('number'); + }); + it ('should generate random number with Power', function () { + random.power(1).should.be.a('number'); + }); + it ('should generate random number with Rayleigh', function () { + random.rayleigh(1, 1).should.be.a('number'); + }); + it ('should generate random number with Student\'s T', function () { + random.studentT(1).should.be.a('number'); + }); + it ('should generate random number with Triangular', function () { + random.triangular(0, 1, 1).should.be.a('number'); + }); + it ('should generate random number with Uniform', function () { + random.uniform(0, 1).should.be.a('number'); + }); + it ('should generate random number with Weibull', function () { + random.weibull(1, 1, 1).should.be.a('number'); + }); + it ('should generate random number with Bernoulli', function () { + random.bernoulli(0.5).should.be.a('number'); + }); + it ('should generate random number with Binomial', function () { + random.binomial(10, 0.5).should.be.a('number'); + }); + it ('should generate random number with Geometric', function () { + random.geometric(0.5).should.be.a('number'); + }); + it ('should generate random number with Hypergeometric', function () { + random.hypergeometric(6, 10, 4).should.be.a('number'); + }); + it ('should generate random number with NegativeBinomial', function () { + random.negativeBinomial(5, 0.5).should.be.a('number'); + }); + it ('should generate random number with Pascal', function () { + random.pascal(5, 0.5).should.be.a('number'); + }); + it ('should generate random number with Poisson', function () { + random.poisson(5).should.be.a('number'); + }); + it ('should generate random number with UniformDiscrete', function () { + random.uniformDiscrete(1, 10).should.be.a('number'); + }); }); });