乱数を使う
乱数を使うには 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.random
と g.game.localRandom
どちらでも「プレイヤーごとに異なる乱数」が生成されてしまいます。 ランキングに参加するプレイヤー全員の間で共通の乱数を使うには、ニコ生ゲームを作ろう » ランキングゲームテンプレートの "共通乱数生成器" を参照してください。