/** Generates BigInts between low (inclusive) and high (exclusive) */
function generateRandomBigInt(lowBigInt, highBigInt) {
if (lowBigInt >= highBigInt) {
throw new Error('lowBigInt must be smaller than highBigInt');
}
const difference = highBigInt - lowBigInt;
const differenceLength = difference.toString().length;
let multiplier = '';
while (multiplier.length < differenceLength) {
multiplier += Math.random()
.toString()
.split('.')[1];
}
multiplier = multiplier.slice(0, differenceLength);
const divisor = '1' + '0'.repeat(differenceLength);
const randomDifference = (difference * BigInt(multiplier)) / BigInt(divisor);
return lowBigInt + randomDifference;
}