refactor: remove home made random integer generator
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Mon, 1 Jan 2024 12:26:02 +0000 (13:26 +0100)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Mon, 1 Jan 2024 12:26:02 +0000 (13:26 +0100)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
benchmark-utils.mjs
quick-select.mjs

index 7a681c138877d9d6324333ad7197978864f5c036..1d486bf68172e2153a58a7a1599b0a19b601ac43 100644 (file)
@@ -1,4 +1,4 @@
-import { randomBytes, getRandomValues } from 'node:crypto'
+import { randomBytes, getRandomValues, randomInt } from 'node:crypto'
 
 /**
  * Generate a cryptographically secure random number in the [0,1[ range
@@ -16,23 +16,6 @@ export function secureRandomWithRandomValues () {
   return getRandomValues(new Uint32Array(1))[0] / 0x100000000
 }
 
-/**
- * @param max
- * @param min
- * @returns
- */
-export function generateRandomInteger (max = Number.MAX_SAFE_INTEGER, min = 0) {
-  if (max < min || max < 0 || min < 0) {
-    throw new RangeError('Invalid interval')
-  }
-  max = Math.floor(max)
-  if (min != null && min !== 0) {
-    min = Math.ceil(min)
-    return Math.floor(secureRandom() * (max - min + 1)) + min
-  }
-  return Math.floor(secureRandom() * (max + 1))
-}
-
 /**
  *
  * @param max
@@ -80,7 +63,7 @@ export function generateRandomObject (
   numberMax = Number.MAX_VALUE,
   numberGenerator = generateRandomFloat
 ) {
-  const size = generateRandomInteger(sizeMax)
+  const size = randomInt(sizeMax)
   const object = {}
   for (let i = 0; i < size; i++) {
     object[i.toString()] = numberGenerator(numberMax)
index efbb9b7238800f893ac03a1df5e6d177fe17981a..d4270268fc58e25763684dff27533d643fbfdcdb 100644 (file)
@@ -1,5 +1,5 @@
+import { randomInt } from 'node:crypto'
 import Benchmark from 'benny'
-import { generateRandomInteger } from './benchmark-utils.mjs'
 
 /**
  * @param numberOfWorkers
@@ -12,7 +12,7 @@ function generateRandomTasksMap (
 ) {
   const tasksArray = []
   for (let i = 0; i < numberOfWorkers; i++) {
-    const task = [i, generateRandomInteger(maxNumberOfTasksPerWorker)]
+    const task = [i, randomInt(maxNumberOfTasksPerWorker)]
     tasksArray.push(task)
   }
   return new Map(tasksArray)
@@ -63,7 +63,7 @@ const defaultPivotIndexSelect = (leftIndex, rightIndex) => {
 }
 
 const randomPivotIndexSelect = (leftIndex, rightIndex) => {
-  return generateRandomInteger(rightIndex, leftIndex)
+  return randomInt(leftIndex, rightIndex)
 }
 
 /**