我需要一个在用户指定的数字范围(-9999 到 9999 之间)和用户指定的位数限制(1 到 4 位之间)内生成完全随机整数(非常重要)的函数。
示例 1:如果用户想要一个介于 -9999 和 9999 之间的 4 位数字,则以下数字将是符合条件的选择 -9999 到 -1000 和 1000 到 9999。
示例 2:如果用户想要一个介于 25 和 200 之间的 2 或 3 位数字,则以下数字将是符合条件的选择 25 到 200。
我写了一个有效的函数,但我不确定它是否是最好的解决方案?有重复的代码,我不认为它是完全随机的?
// Generates a random integer
// Number range
// Min (-9999-9999)
// Max (-9999-9999)
// Digit limit
// Min (1-4)
// Max (1-4)
function generateRandomInteger(minNumber, maxNumber, minDigits, maxDigits) {
// Generate a random integer in the number range
var num = Math.floor(Math.random() * (maxNumber - minNumber)) + minNumber;
// Find number of digits
var n = num.toString();
n = n.length;
// If number is negative subtract 1 from length because of "-" sign
if (num < 0) {
n--;
}
// End: find number of digits
while ((n > maxDigits) || (n < minDigits)) {
// Generate a random integer in the number range
num = Math.floor(Math.random() * (maxNumber - minNumber)) + minNumber;
// Find number of digits
var n = num.toString();
n = n.length;
// If number is negative subtract 1 from length because of "-" sign
if (num < 0) {
n--;
}
// End: find number of digits
}
return num;
}