C#でおみくじを作ろう!RandomとListを使った初心者向けミニ制作
これまでの記事では、配列から List<T> に変更し、Add、Count、foreach、検索などの基本を学んできました。
今回は少し雰囲気を変えて、覚えたことを使いながら小さな作品を作ってみましょう。
作るのは、実行するたびに結果が変わる「おみくじ」です。C#の Random と List<string> を組み合わせます。
Listの検索をまだ読んでいない方は、先に「C#のListから生徒を検索しよう!foreach・Find・FindAllを初心者向けに解説」を確認しておくと、今回の内容にも入りやすくなります。
今回作るおみくじ
完成すると、コンソールに次のような結果が表示されます。
今日の運勢は「大吉」です!
もう一度実行すると、「中吉」や「小吉」など、別の結果が表示されることがあります。

乱数とは
実行するたびに、どの数字になるか分からない数を乱数と呼びます。
サイコロを振ると1から6のどれかが出ます。これも、乱数をイメージしやすい例です。
C#では、Randomを使うと乱数を作れます。
Randomを使う準備
最初に、Randomを使うための変数を用意します。
Random random = new Random();
randomという名前は自由に変更できます。今回は、この変数に「ランダムな数字を作ってください」とお願いしていきます。
1から6のサイコロを作る
まずは、おみくじを作る前にサイコロで練習してみましょう。
Random random = new Random();
int dice = random.Next(1, 7);
Console.WriteLine($"サイコロの目は {dice} です");
random.Next(1, 7)と書くと、1から6までの数字が作られます。
Nextの最大値は含まれない
ここは、初心者が間違えやすいところです。
Next(1, 7)の最初の1は含まれますが、最後の7は含まれません。
- 最小値:1(含まれる)
- 最大値:7(含まれない)
- 作られる数字:1、2、3、4、5、6
「最大値の手前まで」と覚えておきましょう。
おみくじの結果をListに入れる
次に、おみくじに表示したい文字を List<string> に入れます。
List<string> fortunes = new List<string>
{
"大吉",
"中吉",
"小吉",
"吉",
"末吉"
};
このListには、5個の文字が入っています。そのため、fortunes.Countは5になります。
あとから結果を増やしたくなったら、Listの中に文字を追加するだけです。
ランダムな番号を作る
Listの要素には、0から始まる番号が付いています。この番号をインデックスと呼びます。
- 大吉:0番
- 中吉:1番
- 小吉:2番
- 吉:3番
- 末吉:4番
0から4までの数字をランダムに作るには、次のように書きます。
int index = random.Next(fortunes.Count);
fortunes.Countは5です。Next(5)の5は含まれないため、作られる数字は0、1、2、3、4のどれかになります。
これは、5個の要素が入ったListで使えるインデックスとぴったり一致します。
Listから結果を取り出す
作った番号を使い、Listからおみくじの結果を取り出します。
string result = fortunes[index];
Console.WriteLine($"今日の運勢は「{result}」です!");
たとえば index が0なら「大吉」、3なら「吉」が取り出されます。
完成コード
ここまでのコードを、ひとつにまとめます。
using System;
using System.Collections.Generic;
Random random = new Random();
List<string> fortunes = new List<string>
{
"大吉",
"中吉",
"小吉",
"吉",
"末吉"
};
int index = random.Next(fortunes.Count);
string result = fortunes[index];
Console.WriteLine($"今日の運勢は「{result}」です!");
実行すると、Listに入れた5個の結果から、どれか1個が表示されます。
実行するたびに結果が変わる
プログラムを何度か実行してみてください。
同じ結果が続くこともありますが、間違いではありません。おみくじを2回引いて、偶然同じ結果が出ることもあるからです。
初心者が気をつけたい点
Listが空のまま random.Next(fortunes.Count) を実行すると、結果を取り出せません。少なくとも1個は要素を入れておきましょう。
また、短い時間に何度も乱数を作りたい場合でも、new Random()は最初に1回だけ書き、同じ random を使います。
自分で改造してみよう
完成したら、少しずつ自分の作品に変えてみましょう。
- 「凶」や「大凶」を追加する
- 「今日は新しいことに挑戦しよう」などのメッセージを追加する
- 食べ物やゲームの行き先をランダムに決める
- じゃんけんの手をランダムに選ぶ
- Listに入れた生徒から1人を選ぶ
Listに入れる文字を変えるだけでも、いろいろなミニアプリを作れます。
今回のまとめ
Randomを使うと、ランダムな数字を作れるNext(1, 7)では1から6が作られるNextの最大値は含まれないNext(fortunes.Count)なら、Listで使える番号を作れるfortunes[index]で、選ばれた結果を取り出せる
今回は、RandomとListを組み合わせて、実際に遊べる小さな作品を作りました。
文法をひとつずつ覚えることも大切ですが、自分で動くものを作ると理解が深まります。まずは結果を1個追加するところから、気軽に改造してみてください。








ディスカッション
コメント一覧
まだ、コメントがありません