Tips

2018.05.14

C# 基礎 第6回 算数と乱数

数学じゃないよ算数だよ

おはようございます。
この連載も6回目になりましたね。
今日もよろしくお願いします。

今日は、算数をします。
算数なんて小学校で習ったというみなさん、
ご注意あれ。
実は、C#の算数は、小学校の算数とはちょっと違うのです!
合わせて、でたらめな数の出し方(乱数)も学びましょう。

本日のラインアップです。

  1. おさらい
  2. 整数の算数
  3. 小数の算数
  4. 乱数
  5. 乱数と算数の組み合わせ実習
  6. まとめ

1. おさらい

前回は文字列の足し算をやりましたね。
でも、足し算って、もともと数に対して行うものでした。
順番が逆になってしまいましたが、本家本元の数の足し算と、
その他の算数をC#でおさらいしましょう。

2. 整数の算数

まずは、整数の算数です。
私たちが日常生活で1個、2個、3個と個数を数えるための、1、2、3…という数。
何もないことを表す0。
そして、0よりも少ないことを表す-1、-2、-3…といった負の数。
こういった数を整数と言います。

足し算

整数の足し算。
これは簡単ですかね。
使う記号は『+』。
小学校と同じですね。

コード例

// 4 + 3 は 7
4 + 3;

引き算

整数の引き算。
記号は『-』です。
これも小学校と同じです。

コード例

// 4 - 3 は 1
4 - 3;

掛け算

次は掛け算です。
みなさん、もしかしてこう思っていませんか?

知ってるよ、記号は『×』でしょ。
当たり前じゃん!

おっしゃる通りです、と申したいところですが、
残念ながら違うのです。
C#の掛け算の記号は 『*』です。

コード例

// 4 * 3 は 12
4 * 3;

割り算

続きまして割り算です。
記号は『/』。
これも、小学校とは違いますね。

注意することとして、割り算では、割り切れた結果のみが帰ってきます。
例えば、『4 / 3』は、1.3333(後略)ではなく、『1』としか帰ってきません。

コード例

// 5 / 3 は 1
5 / 3;

割り算の余り

筆者の小学校では、
割り算の余りを、独立した計算としては扱いませんでした。
しかし、C#では独立した記号が用意されています。
記号は『%』です。
小学校の割り算の記号と同じです。紛らわしいですね。

コード例

// 5 % 4 は 1;
5 % 4;

整数の算数まとめ

最後に、整数の計算をまとめたコードと実行結果を紹介します。

コード例

using System;

namespace BasicMathematicsForInt
{
    class MainClass
    {
        public static void Main(string[] args)
        {
            // 整数の足し算
            Console.WriteLine("整数の足し算: 1 + 1");
            Console.WriteLine(1 + 1);

            // 整数の引き算
            Console.WriteLine("整数の引き算: 2 - 4");
            Console.WriteLine(2 - 4);

            // 整数の掛け算
            Console.WriteLine("整数の掛け算: 5 * 5");
            Console.WriteLine(5 * 5);

            // 整数の割り算
            Console.WriteLine("整数の割り算: 5 / 2");
            Console.WriteLine(5 / 2);

            // 整数の割り算の余り
            Console.WriteLine("整数の割り算の余り: 5 % 2");
            Console.WriteLine(5 % 2);
        }
    }
}

実行結果

3. 小数の算数

つぎは小数ですね。
基本的には整数の算数と同じです。
ただ、割り算に関しては違いが見られるので、
そこには注意が必要です。

足し算

コード例

// 1.5 + 2.2 は3.7
1.5 + 2.2;

引き算

コード例

// 4.4 - 3.7 は0.7
4.4 - 3.7;

掛け算

コード例

// 3.0 * 2.2 は6.6
3.0 * 2.2;

割り算

小数の割り算は、整数の割り算とは違います。
小数の割り算は、計算できる桁数いっぱいまで、割り切ります。

コード例

// 5.0 / 2.0 は2.5
5.0 / 2.0;

割り算の余り

小数の割り算の余りは、整数の割り算の余りと同じです。
きれいに割り切れるところまで割ったあとの余りを返します。

コード例

// 3.7 % 2.1 は1.6
3.7 % 2.1;

小数の算数まとめ

コード例

using System;

namespace BasicMathematicsForDouble
{
    class MainClass
    {
        public static void Main(string[] args)
        {
            // 小数の足し算
            Console.WriteLine("小数の足し算: 1.2 + 1.3");
            Console.WriteLine(1.2 + 1.3);

            // 小数の引き算
            Console.WriteLine("小数の引き算: 2.5 - 4.2");
            Console.WriteLine(2.5 - 4.2);

            // 小数の掛け算
            Console.WriteLine("小数の掛け算: 5.2 * 2.0");
            Console.WriteLine(5.2 * 2.0);

            // 小数の割り算
            Console.WriteLine("小数の割り算: 5.4 / 2.1");
            Console.WriteLine(5.4 / 2.1);

            // 小数の割り算の余り
            Console.WriteLine("小数の割り算の余り: 5.4 % 2.1");
            Console.WriteLine(5.4 % 2.1);
        }
    }
}

実行結果

4. 乱数

『乱数』、という言葉は何を意味するんでしょうね。
プログラミングの世界では、
『0から3までの乱数(整数の乱数)』や、
『0.0から0.9までの乱数(小数の乱数)』、
という言葉がよく使われます。

ためしに、『0から3までの乱数(整数の乱数)』は何なのか、以下に示してみますね。

1. 0から3までの4つの整数のリストがあります。
    [0, 1, 2, 3]

2. この中からひとつの整数を選びます。

3. この中からそれぞれの整数が選ばれる確率は25パーセントです。

4. 25パーセントなのは、100パーセントをリストの中の整数の個数4で割った結果だからです。

5. この、『予測不可能な形で選ばれる、0から3までのどれかの整数』を、0から3までの乱数(乱整数)といいます。

『0.0から、0.9までの乱数(下一桁小数)』も、仕組みは同じです。
『0.1から0.9までの、9つの下一桁小数のリスト』から、どれかが選ばれます。
しかし、どれが選ばれるかは予測不可能です。

最後に、C#のコードで、どう乱数をつくりだすかを下に示します。
コード例

using System;

namespace RandomNumber
{
    class MainClass
    {
        static void Main(string[] args)
        {
            Console.WriteLine("0から3までの乱整数");
            Console.WriteLine(
                // 1. (new Random())は、乱数をつくる人(乱数生成器)です。
                // 2.  Next(0、4)は、0から3(4から1を引いた数)までの整数の乱数を返す、という意味です。
                // 3. 最後に、Console.WriteLine()で乱数を画面に出力します。
                // 注意: (0, 4)とあっても、実際は0から3までです。C#の仕様でこうなっています。
                (new Random()).Next(0, 4)
            );

            Console.WriteLine("0.0から1.0未満の下15桁小数の乱数");
            Console.WriteLine(
                // 1. (new Random())は、乱数をつくる人(乱数生成器)です。
                // 2. NextDouble()は、0.0以上、1.0未満の、小数点以下15桁の小数の乱数を返す、という意味です。
                // 3. 最後に、Console.WriteLine()で乱数を画面に出力します。
                (new Random()).NextDouble()
            );
        }
    }
}

実行結果

5. 乱数と算数の組み合わせ実習

せっかく乱数を学んだのですから、次は算数と組み合わせてみましょう。
例として、
整数の乱数に何かを足す操作と、
整数の乱数を何かで割った余りを求める操作を、
C#で書いた例です。

コード例

using System;

namespace RandomNumberAndBasicMathematics
{
    class MainClass
    {
        static void Main(string[] args)
        {
            Console.WriteLine("0から2までの乱数に3を加えます。");
            // コンソール画面に、()の中身が表示される。
            Console.WriteLine(
                // こちらが表示される中身を決める部分。
                // 0, 1, 2までの乱数に3を足す。
                // 例: 乱数の結果が2なら、2+3で最終的に5になる。
                (new Random()).Next(0, 3) + 3
            );

            Console.WriteLine("1から7までの乱数を5で割った余りを求めます。");
            // コンソール画面に、()の中身が表示される。
            Console.WriteLine(
                // こちらが表示される中身を決める部分。
                // 1から7までの乱数を5で割った余りを求める
                // 例: 乱数の結果が6なら、 6を5で割った余りは1なので、最終的に1になる。
                (new Random()).Next(1, 8) % 5
            );
        }
    }
}

実行結果

6. まとめ

今日は、算数と乱数を学びました。
次回は、正しいか正しくないかを、C#でどう表すか練習していきましょう。

ゲーム制作関連のオススメ連載リンク

とっても手軽なゲーム制作体験!
Unityゲーム開発基礎

実際のリリースゲームを題材にしたハンズオンゲーム制作連載
実践unityゲーム開発

Recent News

Recent Tips

Tag Search