+ return Math.floor(secureRandom() * (max + 1))
+}
+
+/**
+ *
+ * @param max
+ * @param min
+ * @returns
+ */
+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')
+ }
+ return (crypto.randomBytes(4).readUInt32LE() / 0xffffffff) * (max - min) + min
+}
+
+/**
+ *
+ * @param size
+ * @param max
+ * @param numberGenerator
+ * @returns
+ */
+function generateRandomNumberArray (
+ size,
+ max = Number.MAX_VALUE,
+ numberGenerator = generateRandomFloat
+) {
+ const array = []
+ for (let i = 0; i < size; i++) {
+ array.push(numberGenerator(max))
+ }
+ return array
+}
+
+/**
+ *
+ * @param sizeMax
+ * @param numberMax
+ * @param numberGenerator
+ * @returns
+ */
+function generateRandomObject (
+ sizeMax = 500,
+ numberMax = Number.MAX_VALUE,
+ numberGenerator = generateRandomFloat
+) {
+ const size = generateRandomInteger(sizeMax)
+ const object = {}
+ for (let i = 0; i < size; i++) {
+ object[i.toString()] = numberGenerator(numberMax)
+ }
+ return object