当方、「C#」言語を勉強しようとしています。
そこで入門関係のサイトをウェブで見付けました。
そのサイトは下記URLになります。
http://www12.plala.or.jp/dokugaku/main/2/7.html
このサイトの「C#の乱数機能」のトレース方法を教えて下さい。
出来れば分かり易く解説して頂けると幸いです。
お手数お掛けしますが、ご存知の方おられましたら、ご教授お願いします。
以上、よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
整数型の配列 me[0]~me[5] を新たに確保
int[] me = new int[6];
変数iの値を0~5まで変化させながら6回ループ
for(int i = 0;i<6;i++)
me[0]~me[5]の中身をゼロで初期化する
me[i] = 0;
乱数を生み出すオブジェクトを用意
Random ran = new System.Random();
変数iの値を0~99999まで変化させながら10万回ループ
for(int i = 0;i<100000;i++)
{
0~5の範囲の整数の乱数を生成し,変数resultに格納
int result = ran.Next(6);
「乱数」番目の配列要素,すなわち,me[0]~me[5]のいずれかに1を足す
me[result]++;
}
変数iの値を0~5まで変化させながら6回ループ
for(int i = 0;i<6;i++)
各サイコロの目が出た回数の集計結果 me[0]~me[5] を表示する
Console.WriteLine("{0}: {1} times",i+1 ,me[i]);
最終的な出力例はこんな感じ↓
1: 16671 times
2: 16473 times
3: 16908 times
4: 16614 times
5: 16555 times
6: 16779 times
ご回答ありがとうございます。
私が理解に苦しんだのは、「me[result]++」の所でした。
これは「me[0]~me[5]の何れかに1を足す」と言うことなのですね。
更に質問で悪いのですが、何故「me[i]」と「me[result]++」が同じになるのですか。
取得してきた値が「0~5」だから「me[i]」と「me[result]++」が同じになるということですか。
「result」で取得した値が「5」だった場合、「me[result]++」には何が入るのですか。
ここで「++」をしてますよね。この「++」は、どのような意味を持っているのですか。
まだ少し「me[i]」と「me[result]++」の関連性が分かりません。
恐縮ですが、よろしければ教えて下さい。
以上、よろしくお願い致します。
No.2
- 回答日時:
for(int i = 0;i<6;i++)
for(int i = 0;i<100000;i++)
for(int i = 0;i<6;i++)
と3箇所に登場する i++ には疑問をお持ちでないようなのに,
me[result]++ という箇所に対してだけ
>この「++」は、どのような意味を持っているのですか。
と質問なさっているということは,
「値を1つ増やす」という「++」の意味が分からないのではなく,
単独変数の i と配列変数の me[] の違いが分からないということでしょうか。
----------------
>まだ少し「me[i]」と「me[result]++」の関連性が分かりません。
i や result といった変数名は関係なく,その変数の値が 0~5 の範囲の整数に収まっていることに意味があります。
for(int i = 0;i<6;i++)
me[i] = 0;
と変数 i を 0~5 に変化させてループする意味が分からないならば,変数 i を使わずに次の6行を書いても意味は同じです。
me[0] = 0;
me[1] = 0;
me[2] = 0;
me[3] = 0;
me[4] = 0;
me[5] = 0;
どちらのコーディングをしても,次のような連続した6つの要素から成る配列変数の中身すべてに0が代入されます。
me[0] me[1] me[2] me[3] me[4] me[5]
+―――+―――+―――+―――+―――+―――+
| 0 | 0 | 0 | 0 | 0 | 0 |
+―――+―――+―――+―――+―――+―――+
>「result」で取得した値が「5」だった場合、
>「me[result]++」には何が入るのですか。
me[5] の値が1つ増え,次のようになります。
me[0] me[1] me[2] me[3] me[4] me[5]
+―――+―――+―――+―――+―――+―――+
| 0 | 0 | 0 | 0 | 0 | 1 |
+―――+―――+―――+―――+―――+―――+
回答ANo.1の末尾では,10万回ループしながら毎回 0~5 の値を乱数で生成した結果(サイコロを10万回振るという作業をシミュレートした結果),ループのたびに me[0]~me[5] のいずれかの値が1つずつ増え,最終的に配列変数の中身が次のようになったという例を紹介しました。
me[0] me[1] me[2] me[3] me[4] me[5]
+―――+―――+―――+―――+―――+―――+
| 16671| 16473| 16908| 16614| 16555| 16779|
+―――+―――+―――+―――+―――+―――+
ご回答ありがとうございます。
返事をした後に再び考えてみたら、分かりました。
「int[] me = new int[6];」で「me[]」を「0~5」に設定しているのが鍵なんですね。
「me[result]++」が実行された場合に「result」の番地の値が増えることが分かりました。
更に質問で恐縮ですが、出来たらで結構なので下記URLのトレース方法を教えて下さい。
文章を読んだだけでは分からないので、分かり易く解説して頂けると幸いです。
http://www12.plala.or.jp/dokugaku/main/4/4.html
お手数お掛けしますが、よろしくお願いします。
以上、よろしくお願い致します。
No.3
- 回答日時:
別の話題になるなら,別の質問を新たに立てましょう。
>更に質問で恐縮ですが、
>出来たらで結構なので下記URLのトレース方法を教えて下さい。
>http://www12.plala.or.jp/dokugaku/main/4/4.html
ご回答ありがとうございます。
新たに質問させて頂くことにしました。
「C#の乱数機能」については理解が出来ました。
ご丁寧に解説して頂いて、ありがとうございました。
以上、ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- オープンソース IT用語、ソースとオブジェクト、改変と翻訳と翻案の違いなど どのようにりかいすればよいのですか 1 2022/09/09 10:02
- 英語 口頭での"the following..."の可否等について 6 2022/08/19 01:01
- Excel(エクセル) エクセルのマクロ作成について教えてください 5 2023/02/20 00:39
- LANケーブル・USBケーブル USB-C DCケーブルを探しています。 下記画像の両方がL字型のUSB-C DCケーブルを探してい 4 2022/08/09 19:49
- C言語・C++・C# visual studio 2019 についての質問です 1 2022/09/21 09:58
- 画像編集・動画編集・音楽編集 【急】【Zbrush】3DCG初心者です。ノートPCでのZbrush動作環境につきまして 1 2023/08/19 17:38
- Wi-Fi・無線LAN パソコンインターネット接続方法について 7 2022/10/29 17:59
- 経済学 マクロ経済学の「政府支出乗算」の求め方が分かりません。 10 2022/11/20 16:47
- 英語 I hope will ・・・・・・ 2 2022/07/24 09:48
- Excel(エクセル) エクセルでの文字抽出 3 2022/07/09 12:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
関数から配列を返すには?
-
C言語の課題が出たのですが自力...
-
c言語
-
コンボボックスでデフォルト値...
-
C言語において、 配列要素をひ...
-
100の階乗のプログラムって
-
配列の要素数に変数を入れたい...
-
C言語 プログラミング 関数につ...
-
C言語についてです 5人のテスト...
-
C言語 ファイルの指定された行...
-
配列のアドレス部
-
int i, int i[1];
-
c言語プログラミング 等差数列...
-
2番目の最大値を求める
-
C#で構造体の配列を持った構造...
-
C言語 構造体でつまずいています
-
要素数・要素の値が未定の配列...
-
define で 配列
-
c言語 構造体
-
C言語の配列のコピーについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数から配列を返すには?
-
配列の要素数に変数を入れたい...
-
define で 配列
-
c言語
-
C#で構造体の配列を持った構造...
-
構造体のextern方法
-
C言語において、 配列要素をひ...
-
C#でのフィボナッチ数列
-
C言語の2次元配列 容量が大き...
-
C#で配列が空かを判定するには?
-
配列のアドレス部
-
char型配列をint型に代入するには
-
2番目の最大値を求める
-
C言語の課題が出たのですが自力...
-
C言語についてです 5人のテスト...
-
C言語から質問です。
-
C言語 ファイルの指定された行...
-
c言語 構造体
-
コンボボックスでデフォルト値...
-
MFCのCArrayを使った二次元配列
おすすめ情報