質問: sheet.getRange(Math.floor(Math.random() * 10)+1, 1).getValue(); MailApp.sendEmail( "ghoulshiki1992@gmail.com", "English Words", "今回の単語は" + rand + "です。" ); }
回答: ご存知かどうか分かりませんが、コンピュータで使用されている乱数は**擬似乱数**と言って、一見乱数のように見える数列を**確定的な計算**によって生成しています。(ご参考:擬似乱数) 擬似乱数の生成には色々なアルゴリズムがありますが、どの方式でも基本はシード(seed)と呼ばれる一種の**初期値**から計算を開始します。**確定的な計算**ですから、同じシードを使って計算すると同じ乱数列が生成されてしまいます。 しかし、Google Apps Script(JavaScript)の `Math.random()` 関数は、シードを自由に設定することが出来ません。内部的には**現在時刻のミリ秒**をシード値に使用しているそうですが、読み込みが早過ぎると同じ値が返ってしまうようです。 この問題に対処する方法の一例が下記ページで紹介されていましたので、試してみてはいかがでしょうか。 [JavaScript]そこそこ精度の高い乱数を手に入れる 以上、ご参考になれが幸いです。