Apply dependencies update
[benchmarks-js.git] / benchmark-utils.js
index 9c82d8438c1df329ceed3a4317ba2db9a3f0370f..c12324396345ccee7e4da71d6898798c5c555077 100644 (file)
@@ -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
 }