gpt4 book ai didi

JavaScript 函数 : Generate a random integer within specified range AND digit limit

转载 作者:行者123 更新时间:2023-11-29 22:19:13 24 4
gpt4 key购买 nike

我需要一个在用户指定的数字范围(-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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com