/** * Random module. * @module lib/random */ const is = require("is_js"); const math = require("mathjs"); /** * Sets a random seed. * @param {any} v - Any value to seed pseudo random number generation. * Setting null is equals to seeding the pseudo random number generator with a random seed. * @example * seed(0); */ module.exports.seed = v => { math.config({ randomSeed: v }); }; /** * Returns a random integer. But returns null if min > mix. * @param {integer} min - Lower bound of random integer's range. * @param {integer} max - Upper bound of random integer's range. * @return {(integer|null)} * @example * randomInt(0, 5); // => 0 ~ 5 * randomInt(5, 0); // => null */ module.exports.randomInt = (min, max) => { if (is.not.integer(min)) { throw new Error("1st argument(min) must be integer"); } if (is.not.integer(max)) { throw new Error("2nd argument(max) must be integer"); } if (min > max) { return null; } return math.randomInt(min, max + 1); };