如何生成1到10之间的随机数,除了随机数不能为3
答案 0 :(得分:5)
获取1到9之间的随机数,然后在3或更大时添加一个,或
更好,只需将3
更改为10
。
function getNumber() {
return (n = 9 * Math.ceil(Math.random())) === 3? 10: n;
}
答案 1 :(得分:2)
基于此nice answer:
function getRandomInt (min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
var rand;
while((rand = getRandomInt(1, 10)) == 3);
// rand is now your random number
答案 2 :(得分:0)
这应该有用。
var r = 3;
while(r == 3) r = Math.ceil(Math.random() * 10);
答案 3 :(得分:0)
function rand(begin, end) {
var result = Math.floor( Math.random() * (end - begin + 1) ) + begin;
return result === 3 ? rand(begin, end) : result;
}
答案 4 :(得分:0)
function rand(){
var r = Math.ceil(Math.random() * 10);
if (r==3){
return rand()}
else
return r;
}
答案 5 :(得分:0)
这是一个简短快速的解决方案,使用自动执行功能,可以完全满足您的需求,但仅对您描述的特定情况有用:
var randOneToTenButNotThree = function () {
var result = Math.floor(Math.random() * 10) + 1; // PICK A NUMBER BETWEEN 1 AND 10
return (result !== 3) ? result : randOneToTenButNotThree(); // IF THE NUMBER IS NOT 3 RETURN THE RESULT, OTHERWISE CALL THIS FUNCTION AGAIN TO PICK ANOTHER NUMBER
}
var result = randOneToTenButNotThree(); // RESULT SHOULD BE A NUMBER BETWEEN 1 AND 10 BUT NOT 3
但是,您可以将其抽象出来以生成任意给定范围内的随机数,不包括您选择的任何数量:
var randExcl = function (lowest, highest, excluded) {
var result = Math.floor(Math.random() * (highest - lowest)) + lowest;
return (result !== excluded) ? result : randExcl();
}
var result = randExcl();
不要忘记,如果重命名该函数,您还应该在该return语句的末尾从内部更改对它的引用,以便它在生成排除的数字时可以继续调用它。
答案 6 :(得分:0)
function r(){a = Math.floor(Math.random()* 10)+ 1; if(a == 3)a ++;返回a;}