【誰でもわかる!】乱数とは

プログラミングを勉強し、実際にゲームを作ろうとしたときに出てくる「乱数」に皆さんは困ったことがありませんか?

例えば…

乱数って結局なんなんだ?

乱数ってどうやって使えばいいんだ?

などなど

乱数というのは、ゲーム作成には欠かせないものですが、完全に理解している人も少ないはず…

ですが乱数をうまく使いこなせるようになると、様々なゲーム作成で活用することができるので、是非マスターしましょう!

今回はJavaScriptの乱数について解説しますが、ほかのプログラミング言語と同じような内容であるので、ぜひ参考にしてください!


その前に…

今回の乱数の説明には、2つ予備知識があると分かりやすいです。

1つ目が、変数です!

変数について詳しくまとめた記事があるので、ぜひ参考にしてください!

【誰でもわかる!】変数とは

変数の説明 変数とは、プログラミングにおいて一番大事なものです!だけど変数を知りたくて調べても、「変数は箱である」といった説明がありますが、しっくりこない、なんてことありませんか? ここで私は全く違ったもので例えたいと思 […]

そして、2つ目が、条件分岐です!

条件分岐についても詳しくまとめた記事があるので、ぜひそちらを参考にしてください!

【誰でもわかる!】条件分岐とは

プログラミングを勉強していく中でとても大事になってくるのが条件分岐です。ゲームでの当たり判定など条件分岐はとてもよく使われるものです! 今回は主にJavascriptの条件分岐について詳しく書いていきますが、ほかの有名な […]


乱数とは?

ではまず「乱数」という言葉がどういう意味なのかを解説します!

乱数とは…

一意的でない(つまりランダム)次に何が出る分からない数字である

ニコニコ大百科

というものです。

つまり一番簡単に言うと、「ランダムな数字」ということです。

簡単な例を挙げると、サイコロを振ることと同じです。

サイコロを投げると、1から6の数字がランダムでどれか出てきますね!

また、サイコロを振るまで、どの数字が出るかわかりませんよね?

これが、乱数の定義と同じです!

なので言い換えると、サイコロは1から6を出す乱数と言えます!

そして、プログラミングにおける乱数というのは、基本的に0以上1未満の数をランダムに出します!

JavaScriptの乱数について、詳しく次の項目で詳しく見ていきましょう!


JavaScriptにおける乱数

JavaScriptにおける乱数は、下のようなコードで書きます!

let a = Math.random();

random(ランダム)と書いてありますね!

JavaScriptにおける乱数は、0以上1未満の小数の数字を出すため、上のコードを実行してみると、

例えば、aは「0.17350341586969」という数字になります。
(ぐちゃぐちゃでいかにもランダムって感じですね笑)

そして、aはコードを実行するたびに全く別の値に変わります!
(これメチャクチャ大事)


特定の数字だけ出す乱数を作成する

では次に、特定の数字だけを出す乱数の作り方を解説したいと思います!

先ほども解説した通り、JavaScriptの乱数は、0から1未満の数字を出します!

ではまず、0から2未満がでる乱数を作ってみましょう!

0から2未満を出させる乱数は、このようにして作ります!

let b = Math.random() * 2;

注意:「*」のマークは数学の「×」と同じ意味です!

もともとの乱数は、0から1未満を作る乱数だったため、それに2をかければ0から2未満になりますね!

では、次に0か1しかでない乱数を作ってみましょう!

0か1しか出ない乱数を作るには、小数点以下を切り捨てる「Math.floor」というものを使います!

let b = Math.random() * 2;
let c = Math.floor(b);

このように書くと、変数 c は、変数 b の小数点以下を切り捨てた数となります!

そして、この c が、0か1の乱数となります!

なので、コードを実行してみると、二分の一の確率で、0が出て、二分の一の確率で1が出ます!

今までのを踏まえて、次に0から5が出る乱数を作ってみましょう!

少し考えてから下のコードを見てみましょう!

let a = Math.random() * 6;
let b = Math.floor(a);

こうなりますね!

0以上6未満がでる乱数の、小数点以下を切り捨てれば、0から5が出る乱数になりますね!

では、これをうまく使ってサイコロ(1から6が出る乱数)を作ってみましょう!

これもまた、少し考えてからコードを見てみましょう!

let a = Math.random() * 6;
let b = Math.floor(a) + 1;

先ほどの、0から5が出る乱数に1を足せばいいですね!

このような乱数を作る方法は、ゲーム制作で大事になってきますので、ちょっとずつ理解していきましょう!


簡略化して書く

実は先ほどのコード、もう少し簡略化して書くことができます。

let a = Math.random() * 6;
let b = Math.floor(a) + 1;

これは、簡略化前ですが、この「a」という変数はこれ以降つかわれないでしょう。

0から5が出るサイコロより、1から6が出るサイコロが使われるからです。

では、先ほどのコードを1行にまとめることができるので、やってみますね!

let b = Math.floor(Math.random() * 6) + 1;

ごちゃごちゃしててややこしいですが、先ほどのコードがくっついていますね!

このように、要らない変数を作る事のなく、サイコロを作る事もできます。

一行にすることができますが、逆に見にくくもなるので、状況に応じて使い分けましょう!


条件分岐と組み合わせる

では、最後に条件分岐を使って、JavaScriptのコードを組んでみます。

どのような処理が行われるのかを考えてみましょう!

let a = Math.floor(Math.random() * 10) + 1;
let b = 0;

if (a >= 3) {
  b = 3;
} else {
  b = 4;
}

このコードを実行すると、「b」はどのような値になるでしょうか?

答えは…

3か4になるです

先ほども書いた通り、乱数というのは毎回違う数字を出すので、実行すれば答えが変わってきます。

怒られそうなので、きちんと解説すると、変数「a」は1から10の数を出す乱数になっていますね。

そして、if文で「a」の値が3以上なら、「b」は3になり、

「a」の値が1か2だったら、「b」は4になりますね。

なので、確率としては、10分の8(80%)で「b」は3になり、10分の2(20%)で「b」は4になります!

乱数と条件分岐を使うと、例えばソシャゲのガチャなども作ることができるので、うまく使いこなせるようになりましょう!


最後に

これであなたも乱数マスター!

今回学んだことで、乱数の基礎は完璧です!

乱数は、人間には少し理解しずらいものかもしれませんが、これをうまく使うと、様々なゲームで活用できるようになります!

ぜひ、JavaScriptでもなんでも良いので、コードを組んでみて、ご自身で乱数を感じてください!

乱数についてわからないことがあれば、コメントやTwitterにどしどしお寄せください!

Twitter開設しました!

ただの大学生のブログが更新されたときや、様々な情報を載せるためのTwitterを開設しました!ブログの裏側を載せたり、読者の方の質問に応えたりします! TwitterのIDはこちらです。@Daigakusei_blog […]


というわけで、長くなってしまいましたが、

最後まで読んでいただきありがとうございました!

もしよければ、ほかの記事も読んでみてください!

おすすめの記事:

【超おすすめ】あまり知られていない隠れた神ゲー〈3選〉

みなさんはゲームは好きですか? このブログの運営主のただの大学生は、ゲームが大大好きです。 今まで様々なハードで様々なゲームをプレイしてきました! なので、メチャクチャ有名なゲームから、意外と知られていない無名のゲームを […]