C#でおみくじを作ろう!RandomとListを使った初心者向けミニ制作

広告

これまでの記事では、配列から List<T> に変更し、AddCountforeach、検索などの基本を学んできました。

今回は少し雰囲気を変えて、覚えたことを使いながら小さな作品を作ってみましょう。

作るのは、実行するたびに結果が変わる「おみくじ」です。C#の RandomList<string> を組み合わせます。

Listの検索をまだ読んでいない方は、先に「C#のListから生徒を検索しよう!foreach・Find・FindAllを初心者向けに解説」を確認しておくと、今回の内容にも入りやすくなります。

今回作るおみくじ

完成すると、コンソールに次のような結果が表示されます。

今日の運勢は「大吉」です!

もう一度実行すると、「中吉」や「小吉」など、別の結果が表示されることがあります。

C#のRandomで0から4の番号を作り、Listからおみくじ結果を取り出す流れの図
Randomで番号を作り、その番号を使ってListから結果を取り出します

乱数とは

実行するたびに、どの数字になるか分からない数を乱数と呼びます。

サイコロを振ると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個追加するところから、気軽に改造してみてください。

訪問数 8 回, 今日の訪問数 8回

広告