我需要生成一组唯一的(无重复的)整数,介于 0 和给定数字之间。
那是:
var limit = 10;
var amount = 3;
如何使用 Javascript 生成 1 到 10 之间的 3 个唯一数字?
我需要生成一组唯一的(无重复的)整数,介于 0 和给定数字之间。
那是:
var limit = 10;
var amount = 3;
如何使用 Javascript 生成 1 到 10 之间的 3 个唯一数字?
使用基本Math
方法:
Math.random()
返回 0 到 1 之间的随机数(包括 0,不包括 1)。将此数字向下舍入为其最接近的整数
Math.floor(Math.random()*10) + 1
例子:
//Example, including customisable intervals [lower_bound, upper_bound)
var limit = 10,
amount = 3,
lower_bound = 1,
upper_bound = 10,
unique_random_numbers = [];
if (amount > limit) limit = amount; //Infinite loop if you want more unique
//Natural numbers than exist in a
// given range
while (unique_random_numbers.length < limit) {
var random_number = Math.floor(Math.random()*(upper_bound - lower_bound) + lower_bound);
if (unique_random_numbers.indexOf(random_number) == -1) {
// Yay! new random number
unique_random_numbers.push( random_number );
}
}
// unique_random_numbers is an array containing 3 unique numbers in the given range
Math.floor(Math.random() * (limit+1))
Math.random()
生成一个介于 0 和 1 之间的浮点数,Math.floor()
并将其向下舍入为整数。
通过将其乘以一个数字,您可以有效地创建 range 0..number-1
。如果您希望在从num1
到 的范围内生成它num2
,请执行以下操作:
Math.floor(Math.random() * (num2-num1 + 1) + num1)
要生成更多数字,只需使用 for 循环并将结果放入数组或直接将它们写入文档。
function generateRange(pCount, pMin, pMax) {
min = pMin < pMax ? pMin : pMax;
max = pMax > pMin ? pMax : pMin;
var resultArr = [], randNumber;
while ( pCount > 0) {
randNumber = Math.round(min + Math.random() * (max - min));
if (resultArr.indexOf(randNumber) == -1) {
resultArr.push(randNumber);
pCount--;
}
}
return resultArr;
}
根据所需的范围,返回整数的方法可以更改为:ceil (a,b], round [a,b], floor [a,b), for (a,b) 是将 1 添加到 min 的问题地面。
Math.floor(Math.random()*limit)+1
for(i = 0;i <amount; i++)
{
var randomnumber=Math.floor(Math.random()*limit)+1
document.write(randomnumber)
}