我需要一個函數,在用戶指定的數字範圍內(在-9999到9999之間)和用戶指定的數字限制內生成一個完全隨機的整數(非常重要)在1到4位之間)。JavaScript函數:生成一個隨機整數在指定的範圍內和數字限制
實施例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;
}
「完全隨機的整數(非常重要)」。僅供參考'Math.random'遠不是「完全隨機的」。如果你想隨機使用['crypto.getRandomValues'](https://developer.mozilla.org/en-US/docs/DOM/window.crypto.getRandomValues)。 –