mathjs/lib/function/probability/pickRandom.js

46 lines
1.8 KiB
JavaScript

'use strict';
function factory (type, config, load, typed) {
var distribution = load(require('./distribution'));
/**
* Random pick one or more values from a one dimensional array.
* Array elements are picked using a random function with uniform or weighted distribution.
*
* Syntax:
*
* math.pickRandom(array)
* math.pickRandom(array, number)
* math.pickRandom(array, weights)
* math.pickRandom(array, number, weights)
* math.pickRandom(array, weights, number)
*
* Examples:
*
* math.pickRandom([3, 6, 12, 2]); // returns one of the values in the array
* math.pickRandom([3, 6, 12, 2], 2); // returns an array of two of the values in the array
* math.pickRandom([3, 6, 12, 2], [1, 3, 2, 1]); // returns one of the values in the array with weighted distribution
* math.pickRandom([3, 6, 12, 2], 2, [1, 3, 2, 1]); // returns an array of two of the values in the array with weighted distribution
* math.pickRandom([3, 6, 12, 2], [1, 3, 2, 1], 2); // returns an array of two of the values in the array with weighted distribution
*
* See also:
*
* random, randomInt
*
* @param {Array} array A one dimensional array
* @param {Int} number An int or float
* @param {Array} weights An array of ints or floats
* @return {number | Array} Returns a single random value from array when number is 1 or undefined.
* Returns an array with the configured number of elements when number is > 1.
*/
// TODO: rework pickRandom to a typed-function
var pickRandom = distribution('uniform').pickRandom;
pickRandom.toTex = undefined; // use default template
return pickRandom;
}
exports.name = 'pickRandom';
exports.factory = factory;