【GAS】ゲームに必須の乱数の生成!サイコロやおみくじ、じゃんけんなども


今回は、Google App Scriptsで乱数の作り方を見ていきます。乱数とは、ランダムな数字のことで、ゲーム制作では必須のスキルです。

乱数を使うことで、ランダム性のあるゲームを制作でき、面白さの幅が出るんだにゃ。ぜひ覚えて欲しいんだにゃ。
乱数の生成
Math.random関数で乱数を生成

まずは、ランダムな値を生成する関数を紹介します。その名も「Math.random関数」と言います。この関数は標準で使うことができて、0〜1の間の小数をランダムに生成してくれます。
Logger.log(Math.random());
>> 0.3610871786002128
Logger.log(Math.random());
>> 0.18554496850054103

この関数を実行するだけで、乱数が作れるのは便利だにゃ。何度も試して、ちゃんとランダムになるか試してみるんだにゃ。
Math.floor関数で小数点を切り捨て

次に、Math.random関数と一緒によく使われる関数を紹介します。それが「Math.floor関数」です。これは、小数点を切り捨ててくれる関数です。四捨五入などではなく、切り捨てになるという点に注目してくださいね。
Logger.log(Math.floor(5.5));
>> 5.0
Logger.log(Math.floor(10.1234));
>> 10.0

この関数自体はすごくシンプルだにゃ。でも、Math.random関数に合わせると、必ず0になっちゃうんだにゃ。どうすれば良いのかにゃ〜?
好きな範囲の乱数を生成

それでは、Math.random関数とMath.floor関数を使って、好きな範囲の乱数を生成する方法をお伝えします。乱数生成には、次の手順になります。
好きな範囲の乱数生成方法 (今回は1〜100の間の乱数(整数)を作りたいとします)
(1) Math.random関数を使用
→ 0から1の間の乱数を生成
(2) (1)の値に100(乱数の上限)を掛ける(乗算)する
→ 0から99.99999・・・の中の乱数になる
(3) (2)の値に1(乱数の下限)を足す
→ 1から100.99999・・・の中の乱数になる
(4) (3)の値にMath.floor関数を使用
→ 1から100の中の乱数(小数点が切り捨てられて整数となる)ができる

実際に式になると下のようになり、乗算したり、加算したりする値を変えることで生成できる範囲が変わります。
Logger.log(Math.floor(Math.random() * 100 + 1));
>> (*1~100の間の乱数)
Logger.log(Math.floor(Math.random() * 101 + 100));
>> (*100~200の間の乱数)
Logger.log(Math.floor(Math.random() * 6 + 1));
>> (*1~6の間の乱数、サイコロ)

これで、好きな範囲の乱数が作れるようになったんだにゃ。それでは、実戦での使い方を考えていくんだにゃ。
実際に使ってみた

それでは、実際に乱数を使って見ましょう。サイコロのようにそのままでも使えるんですが、多くの場面では、乱数をインデックスとして、配列などへアクセスする方が多いかもしれません。
今回は、おみくじと、じゃんけんの簡単なプログラミングを紹介しますね。
おみくじ

まずは、おみくじだにゃ。大吉や末吉などの配列を用意し、0〜5の乱数を作って、インデックスからおみくじリストにアクセスするんだにゃ。これだけで、実行するごとに違う値が出てくるプログラムの完成だにゃ!
const omikuji_list = ["大吉", "吉", "中吉", "小吉", "末吉", "凶"];
const index = Math.floor(Math.random() * 6)
Logger.log(omikuji_list[index]);
>> 大吉

おみくじプログラムは、入門書などでよく見かけるプログラムです。今回は一番簡単な構成なので、全ての値の出現率が一定になっています。リスト内を変えたりすることで、出現率を変えることもできるので、ぜひ挑戦してみてくださいね。
じゃんけん

次に、じゃんけんプログラムだにゃ。基本はおみくじと一緒で、じゃんけんの手を配列に入れて、乱数でアクセスするだけだにゃ。今回は一方の手しか作っていないけど、じゃんけんは2人以上でやることを考えると、色々と複雑になっていくんだにゃ。
const janken = ["グー", "チョキ", "パー"];
const index = Math.floor(Math.random() * 3)
Logger.log(janken[index]);

じゃんけんプログラムも、入門書などでよく見かけるプログラムですね。コンピュータ戦としてはこのランダムによる手の出現ができればいいかもしれませんね。あとは、プレイヤーの手の入力を受け取り、if文などで勝ち負けをつけてあげるだけで、じゃんけんゲームになっちゃいます。
乱数を覚えるだけで、簡単に広がりが増えていくので、ぜひ覚えておきましょう!
プログラミングを学ぶならTechAcademy(テックアカデミー)がおすすめ!

独学で苦戦している人は、一度しっかりと基礎を学ぶと次のステップへ進めますよ。今のおすすめは、TechAcademy(テックアカデミー)ですね。
- オンラインで選抜された現役エンジニアから学ぶことができる
- 自宅からWeb制作・プログラミング・アプリ開発など幅広い分野を学べる
- 学ぶだけではなく、転職の支援、副業に活かせるスキルの習得、副業の仕事紹介まで行っている

無料体験や相談もあるから、一度試してみてもいいんだにゃ!
\無料体験、無料相談はこちらから/