-3

乱数1~3を同じ数字を繰り返さないで発生させる方法。これは私のコードです:

function randomFromInterval(from,to)
{ 
var rancalue=Math.floor(Math.random()*(to-from+1)+from);  
return rancalue;
}
var rannumber=randomFromInterval(1,3);
4

3 に答える 3

0
  1. すべての数字を順番に並べた配列を作成する
  2. 質問How can I shuffle an array?で説明されているように、配列をランダムな順序にシャッフルします。
  3. 配列を繰り返します。
于 2013-09-18T12:37:35.767 に答える
0

配列を破棄しても構わない場合は、配列からランダムなメンバーをスプライスできます。

var getOne = (function(arr) {
  return function() {
    return arr.splice(Math.random()*arr.length|0,1);
  };
}([1,2,3]));

数がなくなったらやり直したい場合は、元の配列を保持し、接続された配列のメンバーがなくなるたびにそれをコピーします。

var getOne = (function(original) {
  var arr = [];
  return function() {
    if (!arr.length) arr = original.concat();
    return arr.splice(Math.random()*arr.length|0,1);
  };
}([1,2,3]));
于 2013-09-18T12:57:18.990 に答える
-1

ここからシャッフル機能を使用する:

<script>
    //+ Jonas Raoni Soares Silva
    //@ http://jsfromhell.com/array/shuffle [v1.0]
    function shuffle(o){ //v1.0
        for(var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
        return o;
    };
    var random_generator = function(to, from) {
        var nums = [];
        for(var i = to; i <= from; ++i) nums.push(i);

        return function() {
            if(nums.length === 0) return null;
            return shuffle(nums).pop();
        }
    }

    var rand_unique_range = random_generator(10, 100), num;
    while((num = rand_unique_range()) !== null) console.log(num)
</script>
于 2013-09-18T12:44:15.933 に答える