0

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

4

7 回答 7

5

获取 1 到 9 之间的随机数,如果大于或等于 3,则添加一个,或者

更好,只需将任何3s 更改为10s。

function getNumber() {
    return (n = 9 * Math.ceil(Math.random())) === 3? 10: n;
}
于 2013-01-27T15:01:10.117 回答
2

基于这个不错的答案

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
于 2013-01-27T15:03:36.093 回答
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 语句的末尾从内部更改对它的引用,以便它可以在产生排除数字时继续调用自己。

于 2013-01-27T15:16:34.813 回答
0

函数 r(){a = Math.floor(Math.random() * 10) + 1; 如果 (a==3) a++; 返回一个;}

于 2013-12-24T08:07:14.077 回答
0
function rand(){
var r = Math.ceil(Math.random() * 10);
if (r==3){
return rand()}
else
return r;
}
于 2013-01-27T15:03:33.587 回答
0

这应该有效。

var r = 3;
while(r == 3) r = Math.ceil(Math.random() * 10);
于 2013-01-27T15:00:26.217 回答
0
function rand(begin, end) {
    var result = Math.floor( Math.random() * (end - begin + 1) ) + begin;

    return result === 3 ? rand(begin, end) : result;
}
于 2013-01-27T15:01:33.017 回答