除了随机数不能为3之外,如何生成1到10之间的随机数

时间:2013-01-27 14:58:59

标签: javascript random

如何生成1到10之间的随机数,除了随机数不能为3

7 个答案:

答案 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;}