我有这个功能,它给我一个介于最小和最大之间的随机数,不包括那个数字。如何更改它以给我一个偶数的数字。
function getrandomnumber(min,max,notthis)
{
var num=min+Math.floor((max-min+1)*Math.random());
var j=notthis.indexOf(num)
while (j!=-1)
{
num=min+Math.floor((max-min+1)*Math.random());
j=notthis.indexOf(num)
}
return num;
}
a=getrandomnumber(0,100,"0,10,20")
document.write(a)

答案 0 :(得分:0)
如果我正确理解了这个问题,你可以将数字除以2,如果它不是零,则是偶数。
function getrandomnumber(min,max,notthis)
{
var num=min+Math.floor((max-min+1)*Math.random());
var j=notthis.indexOf(num)
if (j!=-1 && num % 2 == 0)
{
return num;
}else{
getrandomnumber(min,max,notthis);
}
a=getrandomnumber(0,100,"0,10,20")
document.write(a)
答案 1 :(得分:0)
这对你有用吗?你应该使用mod运算符来识别甚至没有。我觉得它会更干净。
function generateRandom(min, max, myArray) {
var num = Math.floor(Math.random() * (max - min + 1)) + min;
return (myArray.includes(num) || num%2 != 0) ? generateRandom(min, max,myArray) : num;
}
myArray = [2, 7, 13, 14, 15];
var test = generateRandom(1, 1000, myArray);
答案 2 :(得分:0)
为了后代,灵感来自我的 answer for Java。
function randomIntFromInterval(min, max) { // min and max included
return Math.floor(Math.random() * (max - min + 1) + min);
}
// Get even random number within range [min, max]
// Start with an even minimum and add random even number from the remaining range
function randomEvenIntFromInterval(min, max) {
if (min % 2 != 0) ++min;
return min + 2 * randomIntFromInterval(0, (max-min)/2);
}
// Get odd random number within range [min, max]
// Start with an odd minimum and add random even number from the remaining range
function randomOddIntFromInterval(min, max) {
if (min % 2 == 0) ++min;
return min + 2 * randomIntFromInterval(0, (max-min)/2);
}
效率稍低,但可读性很强。