From fc2b730e044d3ec5a93c010d789eac47768fccc2 Mon Sep 17 00:00:00 2001 From: Mathias Polligkeit Date: Mon, 1 Aug 2016 23:54:53 +0200 Subject: [PATCH] add an intermediary typed function that will fail a test --- lib/function/probability/distribution.js | 95 ++++++++++++++---------- 1 file changed, 55 insertions(+), 40 deletions(-) diff --git a/lib/function/probability/distribution.js b/lib/function/probability/distribution.js index 182dcad2e..337b8897e 100644 --- a/lib/function/probability/distribution.js +++ b/lib/function/probability/distribution.js @@ -45,46 +45,20 @@ function factory (type, config, load, typed) { // This is the public API for all distributions var randFunctions = { - random: function(arg1, arg2, arg3) { - var size, min, max; - if (arguments.length > 3) { - throw new ArgumentsError('random', arguments.length, 0, 3); - - // `random(max)` or `random(size)` - } else if (arguments.length === 1) { - if (isCollection(arg1)) { - size = arg1; - } - else { - max = arg1; - } - // `random(min, max)` or `random(size, max)` - } else if (arguments.length === 2) { - if (isCollection(arg1)) { - size = arg1; - max = arg2; - } - else { - min = arg1; - max = arg2; - } - // `random(size, min, max)` - } else { - size = arg1; - min = arg2; - max = arg3; - } - - // TODO: validate type of min, max, and size - - if (max === undefined) max = 1; - if (min === undefined) min = 0; - if (size !== undefined) { - var res = _randomDataForMatrix(size.valueOf(), min, max, _random); - return (size && size.isMatrix === true) ? matrix(res) : res; - } - else return _random(min, max); - }, + random: typed({ + '': function() { + return _randomOld(); + }, + 'Array | number': function(arg1) { + return _randomOld(arg1); + }, + 'Array | number, number': function(arg1, arg2) { + return _randomOld(arg1, arg2); + }, + 'Array, number, number': function(arg1, arg2, arg3) { + return _randomOld(arg1, arg2, arg3); + }, + }), randomInt: typed({ 'number | Array': function(arg) { @@ -157,6 +131,47 @@ function factory (type, config, load, typed) { }) } + var _randomOld = function(arg1, arg2, arg3) { + var size, min, max; + if (arguments.length > 3) { + throw new ArgumentsError('random', arguments.length, 0, 3); + + // `random(max)` or `random(size)` + } else if (arguments.length === 1) { + if (isCollection(arg1)) { + size = arg1; + } + else { + max = arg1; + } + // `random(min, max)` or `random(size, max)` + } else if (arguments.length === 2) { + if (isCollection(arg1)) { + size = arg1; + max = arg2; + } + else { + min = arg1; + max = arg2; + } + // `random(size, min, max)` + } else { + size = arg1; + min = arg2; + max = arg3; + } + + // TODO: validate type of min, max, and size + + if (max === undefined) max = 1; + if (min === undefined) min = 0; + if (size !== undefined) { + var res = _randomDataForMatrix(size.valueOf(), min, max, _random); + return (size && size.isMatrix === true) ? matrix(res) : res; + } + else return _random(min, max); + }; + var _pickRandom = function(possibles, number, weights) { var single = (typeof number === 'undefined');