我需要在一个范围之间生成一个随机数,但不包括一个特定的数字 我以为我可以这样做,但它不起作用。
function randNum(num){
var randNumber=Math.floor(Math.random()*num)+1;
if(randNumber==2){
randNum(num);
}else{
alert(num);
}
}
randNum(4);
有什么问题?
感谢。
答案 0 :(得分:2)
答案 1 :(得分:0)
您是否正在尝试提醒您生成的randNum?现在,您每次都会提醒函数参数(在本例中为数字4)。我想你想把它改成警报(randNumber)。
答案 2 :(得分:0)
Math.random
返回0到1之间的数字。请参阅the documentation on MDN。
另外,see this question about generating a random number in a specific range。
所以,你有两个问题:一,你没有在你认为的范围内生成一个随机数,两个,你没有使用你生成的随机数。
我made this fiddle做了类似你所描述的事情。
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
您传递了要排除的数字以及min
和max
的范围,并获得该范围内的随机整数,而不是您要排除的数字。
答案 3 :(得分:0)
正如其他人所说的那样,有一个台风。
我也会这样重新排列:
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
答案 4 :(得分:0)
function randNum(num) {
var randNumber;
do { randNumber = Math.floor(Math.random()*num)+1; } while(randNumber==2);
return randNumber;
}
randNum(4);