数学じゃないよ算数だよ
おはようございます。
この連載も6回目になりましたね。
今日もよろしくお願いします。
今日は、算数をします。
算数なんて小学校で習ったというみなさん、
ご注意あれ。
実は、C#の算数は、小学校の算数とはちょっと違うのです!
合わせて、でたらめな数の出し方(乱数)も学びましょう。
本日のラインアップです。
- おさらい
- 整数の算数
- 小数の算数
- 乱数
- 乱数と算数の組み合わせ実習
- まとめ
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ゲーム開発