- ベストアンサー
二次元配列に数字をランダムに入れる
- 二次元配列に数字をランダムに入れる処理方法を教えてください。
- 乱数を使用して二次元配列にランダムな数字を入れる方法を教えてください。
- 二次元配列にランダムな値を入れる方法について教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
おおむね分かったんですが あと一点、わからない部分があります。 >(2)乱数を100回発生させて、25マスの何処かに入る様にする。 何処かに入る、とはどういった基準で入れるんでしょうか? Math.randomは 0~1未満(0.999~9) の乱数値を発生する関数ですが、 発生した値と入れるべきマス目の関係性は?? 乱数が25種類(0~24)になるように調整すればいいのでしょうか? Yesなら→以下を前回のサンプルの 2次元配列作成 の辺りと差し替え //2次元配列作成(0回で初期化) a = new Array(5); for (i = 0; i <= a.length-1; i++){ //1次元 a[i] = new Array(5); for (j = 0; j <= a[i].length-1; j++){ //2次元 a[i][j]=0; } } //0~24の乱数を発生させ2次元配列に格納 for(k=0;k<100;k++){ g = parseInt(Math.random() *25);//乱数(0~24) x = parseInt(g/5);// g÷5(余りは切り捨て) y = g%5;// g÷5の余り a[x][y]++;//該当するマス目の発生回数をカウントアップ }
その他の回答 (2)
- steel_gray
- ベストアンサー率66% (1052/1578)
#1です。 >「乱数発生回数の合計」ではなく「乱数の合計」を出しているようです。 まさしく乱数の合計を出すサンプルを作りました。 途中までのコードや、 表の「/」や「//」が何を表わしているとか なんだか分からなかったもんで。 サンプルが参考になって正解が出ればよいのですが、 もし引き続きお困りでしたら 「乱数発生回数の合計」というのが何の事だかもう少し詳しく補足していただければまた何かアドバイスできるかもしれません。
補足
大切な説明部分が抜けておりました! 申し訳ありません! 箇条書きで失礼します。 (1)縦に5マス、横に5マス、合計25マスの器を作る。 (2)乱数を100回発生させて、25マスの何処かに入る様にする。 (3)各マスの乱数発生回数を表示する。 (4)結果表示の際、縦、横の合計欄を追加する。 --------------------- | 2 | 3 | 7 | 4 | 1 | --------------------- ↑この数は、このマスに何回乱数が入ったか、という数になります。 お手数おかけします。 お願いいたします。
- steel_gray
- ベストアンサー率66% (1052/1578)
もーひとつ、どうしたいのかがわからないのですが、一応サンプルを。 <html> <head> <style type="text/css"> <!-- td,th{ border:1px solid gray; } td{ text-align:right;/*数値なので右寄せに*/ font-family:monospace;/*数値なので等幅フォントに*/ } --> </style> </head> <body> <table id="T"> <tr><th></th><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th><th>計</th></tr> <tr><th>1</th><td></td><td></td><td></td><td></td><td></td><td></td></tr> <tr><th>2</th><td></td><td></td><td></td><td></td><td></td><td></td></tr> <tr><th>3</th><td></td><td></td><td></td><td></td><td></td><td></td></tr> <tr><th>4</th><td></td><td></td><td></td><td></td><td></td><td></td></tr> <tr><th>5</th><td></td><td></td><td></td><td></td><td></td><td></td></tr> <tr><th>計</th><td></td><td></td><td></td><td></td><td></td><td></td></tr> </table> <script type="text/javascript"> <!-- var T = document.getElementById('T'); //2次元配列作成 a = new Array(5); for (i = 0; i <= a.length-1; i++){ //1次元 a[i] = new Array(5) for (j = 0; j <= a[i].length-1; j++){ //2次元 a[i][j] = parseInt(Math.random() *100) ;//0~99の乱数 } } //2次元配列をテーブルに設定(&計の算出) ttate = [0,0,0,0,0];//縦欄の計の配列(0で初期化) total=0;//総合計 for (i = 0; i <= a.length-1; i++){ tyoko = 0;//横の計 for (j = 0; j <= a[i].length-1; j++){ T.rows[i+1].cells[j+1].appendChild(document.createTextNode(a[i][j])); tyoko += a[i][j]; ttate[j]+=a[i][j]; } T.rows[i+1].cells[j+1].appendChild(document.createTextNode(tyoko)); } for (j = 0; j <= a[0].length-1; j++){ T.rows[i+1].cells[j+1].appendChild(document.createTextNode(ttate[j])); total+=ttate[j]; } T.rows[i+1].cells[j+1].appendChild(document.createTextNode(total)); //--> </script> </body> </html>
補足
すばやい回答ありがとうございます。 教えていただいてとても言い難いのですが、 「乱数発生回数の合計」ではなく「乱数の合計」を出しているようです。 教えていただいた処理を参考に考えてみたいと思います。
お礼
お礼が遅くなって申し訳ありません。 steel_grayさんのおかげで、したかった処理が出来ました。 説明が言葉足らずで分かりにくかったとは思いますが、ずっと付き合って考えていただいて本当にありがとうございました!