Akashic Engine 逆引きリファレンス

乱数を使う

乱数を使うには g.game.random を利用します。(Math.random() は原則利用しないでください。)

凡例

g.game.random.generate(); // 0 以上 1 未満の数値をランダムに返す

利用例

次のコンテンツは、矩形を格子状に並べるプログラムです。ただし矩形の色は 4 種類の色の中からランダムに選んで決めています

詳細

g.game.random は JavaScript の標準にある Math.random() と同じ機能ですが、Akashic Engine のゲームでは原則 g.game.random を利用してください。

Math.random() を利用すると、その結果は実行環境(ブラウザウィンドウ)ごとに異なるので、同じイベントを与えても同じ状態が再現されなくなってしまいます。 g.game.random は一つのゲームプレイ内で全員が同じ乱数シードと乱数生成アルゴリズムを使うように作られているので、この問題がありません。 このことは特にマルチプレイの場合に重要です。詳細は マルチプレイの基礎 を参照してください。

generate() は実数を返しますが、整数の乱数が必要なことも多いでしょう。0 以上 x 未満の整数は、 generate() を使って次のように生成できます。このコードでは、 generate() の戻り値を x 倍することで「0 以上 x 未満の実数」にし、 そこから Math.floor() で小数点以下を切り捨てて「0 以上 x 未満の整数」にしています。

Math.floor(g.game.random.generate() * x);

なお、意図的にプレイヤーごとに異なる乱数を生成したい場合は、 g.game.localRandom を利用してください。

例外: ランキングモードのニコ生ゲームの場合

ランキングモードのニコ生ゲームの場合、ゲームの実行方法が特殊なため、 g.game.randomg.game.localRandom どちらでも「プレイヤーごとに異なる乱数」が生成されてしまいます。 ランキングに参加するプレイヤー全員の間で共通の乱数を使うには、テンプレートでわかるランキング対応ゲーム の 注意点: 乱数について を参照してください。

関連情報