- ベストアンサー
ランダムで抜き出した数字を更に抜き出す
0から19までの数字があるとして、その数字のうち仮に5つをランダムで抜き出します。 次に例えばボタンなどを押すと、その抜き出した5つの数字を除く数字を ランダムで更に5つ抜き出すというようなスクリプトはどのようにすれば できますか? もしくは、この場合ですと、0から19までの数字をランダムで並び替え、 その並び替えた数字を、例えば5つずつ表示するという方法でもいいと思うのですが いずれの場合も方法がわかりません。 for文はいまいちうまくできません。よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
まずは0から19のランダム値を作成して配列にとっておいて、表示を5つずつという方法がいいかと思います。 流れはMath.floor(Math.random() * 20)で乱数を作成して、出た数字のチェックは別の配列に持てばいいかと思います。 あとはボタンを押すごとに5個づつ前から表示していきます。 即席のサンプルですが参考になれば <html> <head> <title>sample</title> <script language="JavaScript"> <!-- store = new Array(20); var count = 0; function Create_Number() { check = new Array(20); for(i=0;i<check.length;i++){ check[i] = 0; document.f1.elements[i].value = ""; } for(i=0;i<check.length;i++){ do{ temp = Math.floor(Math.random() * 20); }while(check[temp] == 1) check[temp] = 1; store[i] = temp; } } function Disp_Number() { if(count == 0){ Create_Number(); } for(i=0;i<5;i++){ document.f1.elements[count*5+i].value = store[count*5+i]; } if(++count >= 4)count = 0; } --> </script> </head> <body> <form name=f1> <input type=text size=2 name=t1><input type=text size=2 name=t2><input type=text size=2 name=t3><input type=text size=2 name=t4><input type=text size=2 name=t5><br> <input type=text size=2 name=t6><input type=text size=2 name=t7><input type=text size=2 name=t8><input type=text size=2 name=t9><input type=text size=2 name=t10><br> <input type=text size=2 name=t11><input type=text size=2 name=t12><input type=text size=2 name=t13><input type=text size=2 name=t14><input type=text size=2 name=t15><br> <input type=text size=2 name=t16><input type=text size=2 name=t17><input type=text size=2 name=t18><input type=text size=2 name=t19><input type=text size=2 name=t20><br> <input type=button value=表示 name=b1 OnClick="Disp_Number()"><br> </form> </body> </html>
お礼
すばらしいです。バッチリです。ありがとうございました。 大変解説もわかりやすかったです。