X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=benchmark-utils.js;h=5694a9710aa81dadc94acab652900aa68f3a01ea;hb=f87fe28c584c9c6fc8752d2cff6822e0cd7feb67;hp=961043b03ca0d233295607608356d33ebb61ea65;hpb=feb629fe63173338456067e55db0aca40c4fdf4f;p=benchmarks-js.git diff --git a/benchmark-utils.js b/benchmark-utils.js index 961043b..5694a97 100644 --- a/benchmark-utils.js +++ b/benchmark-utils.js @@ -15,25 +15,39 @@ function secureRandom () { * @returns */ function generateRandomInteger (max = Number.MAX_SAFE_INTEGER, min = 0) { - if (max < 0) { + if (max < min || max < 0 || min < 0) { throw new RangeError('Invalid interval') } max = Math.floor(max) if (min != null && min !== 0) { - if (max < min || min < 0) { - throw new RangeError('Invalid interval') - } min = Math.ceil(min) return Math.floor(secureRandom() * (max - min + 1)) + min } return Math.floor(secureRandom() * (max + 1)) } +/** + * + * @param max + * @param min + * @param negative + * @returns + */ +function generateRandomFloat (max = Number.MAX_VALUE, min = 0, negative = true) { + if (max < min || max < 0 || min < 0) { + throw new RangeError('Invalid interval') + } + const randomPositiveFloat = crypto.randomBytes(4).readUInt32LE() / 0xffffffff + const sign = negative && randomPositiveFloat < 0.5 ? -1 : 1 + return sign * (randomPositiveFloat * (max - min) + min) +} + /** * * @param size * @param max * @param numberGenerator + * @returns */ function generateRandomNumberArray ( size, @@ -47,21 +61,6 @@ function generateRandomNumberArray ( return array } -/** - * - * @param max - * @param min - * @param negative - */ -function generateRandomFloat (max = Number.MAX_VALUE, min = 0, negative = true) { - if (max < min || min < 0 || max < 0) { - throw new RangeError('Invalid interval') - } - const randomPositiveFloat = crypto.randomBytes(4).readUInt32LE() / 0xffffffff - const sign = negative && randomPositiveFloat < 0.5 ? -1 : 1 - return sign * (randomPositiveFloat * (max - min) + min) -} - /** * @param ms * @returns @@ -70,16 +69,10 @@ async function sleep (ms) { return new Promise(resolve => setTimeout(resolve, ms)) } -const LIST_FORMATTER = new Intl.ListFormat('en-US', { - style: 'long', - type: 'conjunction' -}) - module.exports = { generateRandomInteger, generateRandomFloat, generateRandomNumberArray, sleep, - secureRandom, - LIST_FORMATTER + secureRandom }