GASの乱数を解説!ランダムな一定範囲の整数を生成方法(randomメソッド)

2022年5月28日

Google Apps Script(GAS)で、ランダム性を持たせるために乱数を利用したい時があります。

GASによるMath.random()メソッドを利用した、一定範囲内のランダムな整数を生成する方法を解説します。

サイコロ、おみくじはランダム性が

サイコロを使ったゲームやおみくじなどのアプリケーションを作るにはランダム性が求められます。

一般的なサイコロの場合は1から6の数字がそれぞれ1/6の確率でランダムに出なければなりません。

通常のサイコロは1~6の目がいずれも1/6の確率で出る必要がある

おみくじの場合は、大吉や吉、凶といった運勢をそれぞれが出る確率に応じて出します。

ゲームやアプリケーションでは、サイコロやおみくじのような確率に応じた処理を実装するため、ランダム性が必要です。

GASでもランダムな処理が必要なケース

こうしたランダムな処理はGoogle Apps Script(GAS)のスクリプトでも必要になることがあります。

例えば、GASによるSlackやTwitterのボットを作成する場合に、事前に用意した投稿文からランダムに選択して、投稿する場合です。

スプレッドシートなどに事前に用意したボット用の投稿文が100個ある時、0~99の整数の乱数を生成すれば、その数字に応じた投稿文を投稿できます。

100個の投稿文を上から順番に従って投稿もできますが、パターンが一定になってしまうため、ランダムに投稿文できたほうがよい時もあります。

また、ゲーム性のあるようなGASスクリプトでもランダムな処理が必要です。

乱数を使えば、ランダム処理可能

ランダムな処理を実装するために、Google Apps Script(GAS)も含めた一般的なプログラミング言語では、「乱数」を利用します。

乱数を生成すると、特定範囲内の数字の中から、ランダムな数字が選ばれて格納されます。

選ばれる数字は特定のものが偏って表示されることなく、確率的に均等であることが重要です。

前述したサイコロの例で言えば、1~6の数字が出ますが、1が出やすいといったことはあってはいけません。

GASの乱数はMath.randomメソッド

Google Apps Script(GAS)で乱数を用いたい場合は、数学的な処理が可能なMathオブジェクトのrandomメソッドを利用します。

Math.random()

randomメソッドは0以上1未満の乱数を返します。

randomメソッドからのランダムな戻り値を変数に格納し、その数値を元に条件分岐することで、乱数に応じた処理が可能です。

randomメソッドによる乱数のGASサンプルコード

Google Apps Script(GAS)のrandomメソッドを用いた乱数のサンプルコードを解説します。

for文を使って、0~1の乱数を5回繰り返して、生成された数値を実行ログに表示します。

function myFunction() {
  //0~1の乱数を5回生成してログ出力
  for(let i=0;i<5;i++){
    let rand = Math.random();
    console.log(rand);
  }
}
Google Apps Script(GAS)のrandomメソッドを用いた乱数を繰り返しログ出力するサンプルコードと実行ログ結果

想定通り、0以上1未満の数字がログに出力されています。

例えば、乱数の数字が0.5未満だった場合はパターンAの処理を実行し、0.5以上の場合はパターンBの処理を実行する条件分岐を行えば、50%確率での分岐処理が可能です。

一定範囲の整数での乱数が必要な場合は?

前述したGoogle Apps Script(GAS)のサンプルコードは、0以上1未満の小数での乱数でした。

小数の乱数の場合、パターンによる条件分岐が複雑になってしまうことがあります。

そのため、一定範囲の整数の乱数が生成できると便利です。

乱数の生成自体はMath.random()で0~1の範囲での生成なので、必要な範囲の整数を掛け算し、数値を整数化させます。

例えば、1~100の整数をランダムで生成するには以下のようなコードで乱数を加工します。

function myFunction() {
  //1~100の乱数を5回生成してログ出力
  for(let i=0;i<5;i++){
    //0以上1未満の乱数を生成
    let rand = Math.random();
    //1~100の整数になるように数値計算
    rand = Math.floor(rand*100)+1;
    console.log(rand);
  }
}

整数乱数を生成するサンプルコードを実行すると、想定どおりの範囲の整数が出力できます。

Google Apps Script(GAS)のMath.randomメソッドを用いて、1~100の整数の乱数を繰り返しログ出力するサンプルコードと実行ログ結果

GASサンプルコードの7行目の掛け算している数字と、掛け算したあとに足している数字を調整すれば、好きな範囲の整数をランダムで取得可能です。

まとめ・終わりに

今回、Google Apps Script(GAS)でランダムな処理を実装するために必要な乱数について紹介しました。

サイコロやおみくじといった偶然な要素が発生するスクリプト処理において乱数が必要になります。

GASではMath.random()メソッドを利用することで、0以上1未満の乱数を生成することが可能です。

整数で乱数を取得したい場合は、random()メソッドにランダム範囲の数値を掛け算した上で、Math.floorメソッドで整数化することで取得できます。

GASでランダムな処理を実装したい場合には、今回紹介したサンプルコードを参考に実装してみてください。