dポイントプレゼントキャンペーン実施中!

1から20までの整数から、重複なくランダムに3つの数を取り出したいんですけど、簡単に出来るのでしょうか ?

A 回答 (13件中11~13件)

//配列=randomInt(範囲の下限, 範囲の上限, 個数)


function randomInt(startRange, endRange, num){
if(endRange-startRange+1<num){//ムリ
return [];
}
var a = new Array();
var c = 0;
while(c < num){
var r = Math.round((endRange-startRange)*Math.random()+startRange);
if(a[r]==undefined){//まだ無い
a[r]=r;
c++;
}
}
var ret = new Array();
c=0;
for(var x in a){//整理
ret[c++]=x;
}
return ret;
}

var rand3;
//10~20までの範囲の重複しない3つの数の配列:randomInt(10, 20, 3)
rand3=randomInt(10, 20, 3);
alert(rand3.join(","));
for(i=0;i<rand3.length;i++){
alert(rand3[i]);
}
    • good
    • 0

#1です。


肝心なことを忘れてました。
#1の回答のままですと、小数部が残りますし、単純に切り上げをするのも間違いです。

Math.round((20*Math.random() + 0.5)
で、
0.5以上20.5未満の数を四捨五入するようにします。
    • good
    • 0

Math.random()を使うと、0以上1未満の乱数が生成できます。


これを使って、
20*Math.random() とすると、0以上20未満になります。
20も含めたいので、これに1を足します。
20*Math.random() +1

これで出てきた数字を変数に入れておき、もう一回この関数を呼び出し、変数に入っている数が出てきたらもう一回呼び出します。
ユニークな乱数が3つ生成されたら、完了です。

コードは工夫してみてください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!