作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要一个在用户指定的数字范围(-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;
}
最佳答案
这是你的函数的一个版本,它仍然使用完全相同的方法(即,不断生成数字,直到它得到一个具有正确位数的数字),但消除了代码重复:
function generateRandomInteger(minNumber, maxNumber, minDigits, maxDigits) {
var num, digits;
do {
num = Math.floor(Math.random() * (maxNumber - minNumber)) + minNumber;
digits = Math.abs(num).toString().length;
} while (digits > maxDigits || digits < minDigits);
return num;
}
至于你担心这是否是真的随机,Math.random()
方法会给你一个“伪随机”数,但至少你知道它适用于所有当前的浏览器。
关于JavaScript 函数 : Generate a random integer within specified range AND digit limit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13373799/
我是一名优秀的程序员,十分优秀!