陽だまりの中で

~香川フリーランスのぼやき~

HelloWorldからのC#入門!!簡単な乱数を使ったプログラム

f:id:hidamarinonakade:20150302084123j:plain

はじめに

こんにちわかなたです。
昨日はハリ治療に言っていたため一日お休みをいただきました。

さて、「HelloWorldからのC#入門」も今回で3回目となりました。
以前までに九九表の作成までを行いました。
前回の記事はこちら

HelloWorldからのC#入門!!九九表完成・・・からのレッスン問題 - ひなかなHelloWorldからのC#入門!!九九表完成・・・からのレッスン問題 - ひなかな

はじめにこんにちわ、かなたです。本日は昨日に引き続きC#に関する記事です。なぜか昨日PVがいつもの20倍に増えていて少しびっくりしています。おそらく一部の方が何...

今回は前回出しておいた課題の解説を行いたいと思います。
乱数を用いたプログラムとなります。

乱数を使ってみよう

前回出しておいた課題は以下の二問です。
1.1~13以内の数字を10回表示‏
2.1~4の乱数を10回表示‏

まずこの問題を解く前に乱数について軽く勉強しておきましょう。
乱数とは・・・読んで字のごとくめちゃくちゃな配列の数字のことです!(ランダムな数字=ラン数←嘘です・・・)
はい、勉強も終わったところで問題を解いていきましょう。
まず1問目ですが、これは・・・
え?
そういうことではない?
まぁ、普通そうですよね。
私もそう思います。

乱数を呼び出すプログラムを紹介します。

Random random = new Random ();
int ransu = random.Next(1,54);

以上の文は簡単に説明すると乱数生成器を用意して、乱数を整数型の「ransu」という変数に挿入させています。
赤字の部分は自由に自分の好きな名称に変えられます。
上の文章が乱数生成器です。
下の文章で乱数の範囲を指定して変数に挿入しています。
青字の部分で範囲を指定
この場合1以上54未満の乱数を指定しています。

課題解説

それでは乱数を使用して問題を一つずつ解いていきましょう。

1~13以内の数字を10回表示‏

まず1~13の乱数を生成するプログラムを組みましょう。
上記で説明したプログラムを使用します。

Random random = new Random ();
int number = random.Next(1,14);

これを使用すると「number」変数に1~13の乱数が挿入されます。
あとはこれを表示させるプログラムを追加させます。

Console.WriteLine(number);

これで「number」変数内の乱数がコンソールに表示されます。
あとはこれを以前学習したfor文で10回繰り返しましょう。

for (i = 0; i < 10; i++)
{
}

これです。
それではこれをくっつけます。

Random random = new Random();
for (i = 0; i < 10; i++)
{
int number = random.Next(1,14);
Console.WriteLine(number);
}

これで1~13の乱数を10回表示するプログラムができました。

1~4の乱数を10回表示‏

次にこの問題を解いてみましょう。
とはいっても、これは範囲を狭めただけです。
ですので最初から答えを書きます。

Random random = new Random();
for (i = 0; i < 10; i++)
{
int number = random.Next(1,4);
Console.WriteLine(number);
}

もう少し別の問題を出せばよかったですね^^;

重複しない乱数

これまでは普通の乱数を使いました。
わかりやすく今回の2番目の問題を例にとってみれば、1~4の乱数を10回表示している間に重複する数字もあるということです。
では、これを重複しない数字を表示させるにはどうしたら良いでしょうか?
1~4の数字を重複させずに表示させるわけですから10回表示させることはまずできませんよね?
4回までしか表示できないはずです。
そのことを踏まえて、良く考えてみてください。
今回はこれを課題として出しておきたいと思います。
柔軟な発想を持って考えてくださいね^^

課題:1~10までの数字を重複しないようにランダムに表示

おわりに

今回の記事はどうだったでしょうか?
どういう風に表示されるか画像もつけた方がやはり見やすいですかね?
つけた方が見やすいということであれば、次回からはまたつけたいと思います。

乱数については簡単にしか説明しませんでした(出来ませんでした)が、概ね理解できたでしょうか?
私の出している問題は毎回グーグル先生に聞けばすぐわかるような問題ばかりですが、それではあまり力が付きません。
今回の問題はグーグル先生などに聞くことなく、自分の力だけで解いてみてください。
「int」や「for」「Random」が使えれば普通に解ける問題です。
ここで一生懸命考えて答えの出なかった方は、次回の記事できっと「なるほど!」と思っていただけると思います。
また、それがきっとあなたの力になるはずです。
私と一緒に頑張りましょうね♪