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

2020年11月30日

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

例えば…

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

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

などなど

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

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

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


その前に…

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

1つ目が、変数です!

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

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

プログラミングの勉強を始めたときに最初に学ぶのが、「変数」と呼ばれるものです。 変数を知ることはプログラミング…

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

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


乱数とは?

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

乱数とは…

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

ニコニコ大百科

というものです。

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

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

サイコロを投げると、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を開設しました!ブログの裏側を載…


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

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

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

おすすめの記事: