0

乱数を 3 にすることはできませんが、1 から 10 までの乱数を生成するにはどうすればよいですか

4

7 に答える 7

5

1 から 9 までの乱数を取得し、3 以上の場合は 1 を追加します。または、

3より良いのは、任意の s をs に変更すること10です。

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
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 に答える
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

function r(){a = Math.floor(Math.random() * 10) + 1; もし (a==3) a++; を返します;}

于 2013-12-24T08:07:14.077 に答える
0

これはうまくいくはずです。

var r = 3;
while(r == 3) r = Math.ceil(Math.random() * 10);
于 2013-01-27T15:00:26.217 に答える