我需要在一个范围之间生成一个随机数,但排除一个特定数字。
我以为我可以那样做,但它没有用。
function randNum(num){
var randNumber=Math.floor(Math.random()*num)+1;
if(randNumber==2){
randNum(num);
}else{
alert(num);
}
}
randNum(4);
问题是什么?
谢谢。
我需要在一个范围之间生成一个随机数,但排除一个特定数字。
我以为我可以那样做,但它没有用。
function randNum(num){
var randNumber=Math.floor(Math.random()*num)+1;
if(randNumber==2){
randNum(num);
}else{
alert(num);
}
}
randNum(4);
问题是什么?
谢谢。
Math.random
返回一个介于 0 和 1 之间的数字。请参阅MDN 上的文档。
所以,你有两个问题:第一,你没有在你认为的范围内生成一个随机数,第二,你没有使用你生成的随机数。
我做了这个小提琴,它做的事情类似于你描述的。
function getRandomInt (min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function generateRandomWithExclusion(exclude, min, max) {
var num = getRandomInt(min, max);
while (num === exclude) {
num = geRandomInt(min, max);
}
return num;
}
generateRandomWithExclusion(2, 0, 10) // returns an integer between 0 and 10 that is not 2
您传递要排除的数字和 and 的范围,min
并max
在该范围内获得一个随机整数,该整数不是您要排除的数字。
正如其他人所说,有一个台风。
我也会以这种方式重新排列它:
function randNum(num){
var numberToExclude=2;
var randNumber=Math.floor(Math.random()*(num-1))+1;
if(randNumber>=numberToExclude) {
randNumber+=1;
}
alert(randNumber);
}
randNum(4);
这是一个 JSFidle
您是否尝试提醒您生成的 randNum?现在,您将每次都提醒函数参数(在本例中为数字 4)。我认为您想将其更改为警报(randNumber)。
function randNum(num) {
var randNumber;
do { randNumber = Math.floor(Math.random()*num)+1; } while(randNumber==2);
return randNumber;
}
randNum(4);