乱数1~3を同じ数字を繰り返さないで発生させる方法。これは私のコードです:
function randomFromInterval(from,to)
{
var rancalue=Math.floor(Math.random()*(to-from+1)+from);
return rancalue;
}
var rannumber=randomFromInterval(1,3);
乱数1~3を同じ数字を繰り返さないで発生させる方法。これは私のコードです:
function randomFromInterval(from,to)
{
var rancalue=Math.floor(Math.random()*(to-from+1)+from);
return rancalue;
}
var rannumber=randomFromInterval(1,3);
配列を破棄しても構わない場合は、配列からランダムなメンバーをスプライスできます。
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]));
ここからシャッフル機能を使用する:
<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>