Google Apps Scriptで乱数を使っておみくじプログラムを作る


みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

チャットワークAPIをGoogle Apps Scriptで利用しておみくじチャットを作っているところです。

前回はこちらの記事で

Google Apps Scriptでチャットワークからのメッセージを取得する方法
チャットワークで「おみくじチャット」を作るというのを目標にチャットワークAPIの使い方を勉強していきます。今回はチャットのメッセージをGoogle Apps Scriptで取得するところまでです。

チャットワークからのメッセージを取得するところまでを実装しました。

今回はチャットワークの処理はいったん置いておいて、Google Apps Scriptで乱数を使用しておみくじを作る方法についてお伝えしていきたいと思います。

乱数の発生、小数点の切り捨て、配列の要素数を求めるなど、あちこちで使えるテクニックが満載ですよ!

スポンサーリンク

Google Apps Scriptでおみくじプログラム

今回のおみくじプログラムは動作させたら「大吉、中吉、小吉、吉、末吉、凶」のいずれかが出力されるものにします。

小吉は吉より良くて、吉は末吉より良いんですよ。知っていましたか?

ですから、6つの中から1つを引ければ良いということですね。

Math.randomで乱数を生成する

おみくじは本来、神仏からのメッセージとしてありがたく頂戴するものなのですが、今回のようにプログラムで作るときには、たいがい乱数と呼ばれるものを使います。

多くのプログラミング言語には乱数を生成する組み込みの関数やメソッドなどが用意されており、呼び出すたびに規則性のないランダムな数値を返す。
IT用語辞典:乱数 

Google Apps ScriptはベースはJavaScriptですので、乱数の生成もJavaScriptのものを使います。

まず、0以上1未満の間から1つの数値をランダムで返すメソッド

Math.random()

を使います。

例えばこんなスクリプトを再生してみますと

function logRandom(){
  for(var i=1;i<=10;i++){
    Logger.log(Math.random());
  } 
}

実行してみますと

Google Apps Scriptで乱数を生成する

…んー、確かにランダムに規則性のない数値が出力されますが、小数点が多すぎて扱いづらいですね。

Math.floorで小数点以下を切り捨てる

小数点が邪魔なので、小数点以下の桁を切り捨てます。

そんな場合は

Math.floor(数値)

メソッドを使います。

先ほどのスクリプトをちょっと改良しますね。

function logRandom(){
  for(var i=1;i<=10;i++){
    Logger.log(Math.floor(Math.random()));
  } 
}

実行してみますと

Google Apps Scriptで小数点以下を切り捨て

…全部0.0。

そりゃそうですわな。だって0以上1未満の数値なんですから、小数点とったら全部0になっちゃいます。

そんな時はMath.randomで生成された数値に整数を掛け算してあげれば良いです。

Math.floor(Math.random()*整数))

例えば、こんなスクリプトを実行してみます。

function logRandom(){
  for(var i=1;i<=10;i++){
    Logger.log(Math.floor(Math.random()*6));
  } 
}

すると

Google Apps Scriptで小数点以下を切り捨て-2

お!?なんか良さそうじゃないですか?

ちょっと魔法のようなのですが、説明しますと

  1. 0以上1未満の数値に整数6をかけると、0以上6未満の数値になる
  2. 小数点以下の桁を切り捨てると、0から5までの整数になる

ということです。

おみくじを配列に格納しておくと便利

この方法で生成される0から5までの6つの整数に、おみくじの6つの結果をそれぞれ当てはめれば良さそうです。

その場合は、以下スクリプトのように配列を使うと便利です。

function logRandom(){

  var results=["大吉","中吉","小吉","吉","末吉","凶"];

  for(var i=1;i<=10;i++){
    Logger.log(results[Math.floor(Math.random()*6)]);
  } 
}

3行目で各おみくじの結果を配列に格納しています。全部で要素が6つありますので、配列番号0から5までに格納されているわけですね。

実行をしてみますと

Google Apps Scriptでおみくじを生成

おお!いい感じです。

配列の要素数をlengthで取得する

おみくじの結果なんですが「半吉」というのがあるのも知っていますか?

えと、吉と末吉の間にあるようです。

上記のスクリプトに、この半吉を挿入したいのですが、どうすれば良いでしょうか?

普通に考えると

  • 配列に「半吉」を追加
  • Math.random()に乗算する整数を7にする

とすればよいのですが、配列の要素数を調べるlengthを使う方法もあります。

配列.length

という書き方です。

スクリプトは

function logRandom(){

  var results=["大吉","中吉","小吉","吉","半吉","末吉","凶"];

  for(var i=1;i<=10;i++){
    Logger.log(results[Math.floor(Math.random()*results.length)]);
  } 
}

となります。

このようにしておくと、後から配列の要素を追加または削除をしても乱数の生成が勝手に対応をしてくれるのでとっても楽ちんですね。

実行結果も

Google Apps Scriptのおみくじに半吉を追加

ちゃんと半吉も結果に出ていますね。

まとめ

以上、Google Apps Scriptでおみくじプログラムを作る方法をお伝えしました。

  • 0以上1未満の乱数を発生させるMath.randomメソッド
  • 小数点以下の桁を切り捨てるMath.floorメソッド
  • 整数の乱数を発生させる方法
  • lengthで配列の要素数を算出

などなど、あちこちで使えるテクニックがたくさん登場しました。

おみくじ…侮れませんね。

次回は前回のプログラムと合体させて、チャットワークにおみくじ結果を返す方法をお伝えします。

Google Apps Scriptでチャットワーク上におみくじチャットを作る
Google Apps ScriptとチャットワークAPIを使ってチャットワークで「おみくじ」と送信すると、大吉から凶までのおみくじの結果を生成してチャットワークに返す「おみくじチャット」を作成します。

どうぞお楽しみに!

連載目次:チャットワークAPI初級編:おみくじチャットを作る

本シリーズはGoogle Apps ScriptでチャットワークAPIの様々な機能を呼び出す練習となります。メッセージの取得をして、処理をして、メッセージを返すという一連の流れの基礎を学ぶことができますよ。
  1. Google Apps ScriptでチャットワークAPIを活用するための最初の一歩
  2. Google Apps Scriptでチャットワークからのメッセージを取得する方法
  3. Google Apps Scriptで乱数を使っておみくじプログラムを作る
  4. Google Apps Scriptでチャットワーク上におみくじチャットを作る
  5. Google Apps ScriptでチャットワークにToや返信でメッセージを送る
  6. 【GAS】チャットワークのメッセージを取り出す関数とメッセージを送る関数

タイトルとURLをコピーしました