在0 - 9但不是6之间生成随机

时间:2012-12-24 04:38:09

标签: javascript random

在Javascript中生成0到9(包括两者)之间的随机数,除了6之外的最简单方法是什么?

7 个答案:

答案 0 :(得分:13)

这是你的一线解决方案:(

[0,1,2,3,4,5,7,8,9][Math.floor(Math.random()*9)]

答案 1 :(得分:12)

生成0到8之间的随机数,然后如果它> = 6

则加1

答案 2 :(得分:8)

天真的做法:

var r;
do {
    r = Math.floor(Math.random() * 10);
} while (r == 6);

答案 3 :(得分:2)

我会在这里懒惰并接受@ H2CO3的回答,无需尝试即可工作。

<script type="text/javascript">

function generate(var UNWANTED) {
    var r;
    do {
        r = Math.floor(Math.random() * 10);
    } while (r == UNWANTED);
    return r;
}

function GENERATE_RANDOM_FROM_0_TO_10_BUT_NOT_6_OR_SOMETHING_ELSE_(var NOT_GOOD){
    return generate(NOT_GOOD)     <== One line solution.
}
<script>

答案 4 :(得分:1)

var n = (n = Math.floor(Math.random() * 9)) == 6 ? 9 : n;

答案 5 :(得分:0)

试试这个:

var numbers = "012345789";
var rnum = Math.floor(Math.random() * numbers.length);
var randomnumber = parseInt(numbers.substring(rnum,rnum+1));

答案 6 :(得分:-1)

试试这个:

var rr=(Math.floor(Math.random()*10));
result=(rr==6)?1:rr;

修改
1的概率不太可能是其他的,所以如果它产生6,我就会使它递归。

function notSix() {
  var rr=(Math.floor(Math.random()*10));
  return (rr==6)?notSix():rr;
}

notSix()

纠正第一个例子:
在0-8之间产生,如果产出6转换为9;

var rr=(Math.floor(Math.random()*9));
result=(rr==6)?9:rr;