Apply dependencies update
[benchmarks-js.git] / benchmark-utils.js
index 83d17ca7a7c4bb461d21dc4c994bc4e53b380ee4..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
 }
 
 /**
@@ -95,5 +104,6 @@ module.exports = {
   generateRandomNumberArray,
   generateRandomObject,
   sleep,
-  secureRandom
+  secureRandom,
+  secureRandomWithRandomValues
 }