X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=benchmark-utils.js;h=c12324396345ccee7e4da71d6898798c5c555077;hb=776e64d4c5ca6b2a83a319d4be905430a7d5d22e;hp=9c82d8438c1df329ceed3a4317ba2db9a3f0370f;hpb=5b907dbf7ed955584eb9f452f9dc4c8f59577816;p=benchmarks-js.git diff --git a/benchmark-utils.js b/benchmark-utils.js index 9c82d84..c123243 100644 --- a/benchmark-utils.js +++ b/benchmark-utils.js @@ -9,6 +9,15 @@ function secureRandom () { return crypto.randomBytes(4).readUInt32LE() / 0x100000000 } +/** + * Generate a cryptographically secure random number in the [0,1[ range + * + * @returns + */ +function secureRandomWithRandomValues () { + return crypto.getRandomValues(new Uint32Array(1))[0] / 0x100000000 +} + /** * @param max * @param min @@ -30,16 +39,16 @@ function generateRandomInteger (max = Number.MAX_SAFE_INTEGER, min = 0) { * * @param max * @param min - * @param negative * @returns */ -function generateRandomFloat (max = Number.MAX_VALUE, min = 0, negative = true) { - if (max < min || max < 0 || min < 0) { +function generateRandomFloat (max = Number.MAX_VALUE, min = 0) { + if (max < min) { + throw new RangeError('Invalid interval') + } + if (max - min === Infinity) { 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) + return (crypto.randomBytes(4).readUInt32LE() / 0xffffffff) * (max - min) + min } /** @@ -78,7 +87,7 @@ function generateRandomObject ( for (let i = 0; i < size; i++) { object[i.toString()] = numberGenerator(numberMax) } - return { object, size } + return object } /** @@ -95,5 +104,6 @@ module.exports = { generateRandomNumberArray, generateRandomObject, sleep, - secureRandom + secureRandom, + secureRandomWithRandomValues }