乱数について

乱数とは

 初めにの所で書いたとおり、乱数とはダメージのバラつき、攻撃の辺り判定、そしてお宝入手判定等を支配しているものです。
 大まかな概要は初めにの所で書きました。要するにゲームのランダム性を操作しているものです。
 適当な数字を大量に作り、それを適当に取り出していくことでゲームで予測不可能性を作り出しています。


乱数の推移

 ランダム性を作り出すためにはランダムな数字群(乱数)とランダムに見せかけられる方法が必要になってきます。
 で、具体的には乱数の流れには大まかに言って3パターンあります。
 1つめは乱数テーブル型、2つめはフレーム型、3つめは関数型です。
 が、私はプログラミングに関しては無知なので、関数型とそれ以外はよく知りません。


乱数テーブル型

 適当に数字を並べ(乱数列)、順番に取り出していくのが乱数テーブル型です。
 乱数列は16×16とかの数で構築されているために、乱数テーブルと呼ばれているようです。
 簡単に乱数を固定出来るため、どこでリセットされ、保存されるかが重要になりますが、使われている初期FFでは電源投入直後に特定の初期値に戻され、それ以外では順に取り出して行くのみです。このままでは簡単にパターンが固定されてしまうため、戦闘用の乱数ではこれに下に書いたフレーム型を組み合わせる事によって、人間の反応速度ではランダムにしか思えないように乱数が変化していくようにしています。

 とは言ってもこれは結局は順に数字を取り出しているだけなので、単体で利用されるモンスターグループ選びや、初期FFの出現歩数では乱数が初期値でキープされる電源投入直後では簡単に予測・操作が可能です。


乱数フレーム型

 乱数列を時間経過によって動かし、コマンド等が入力された時点での乱数を参照にするのが乱数フレーム型です。
 時計が内蔵されている電気機器は32768(2^15)Hzの水晶板を振動させ、32768回振動したら1秒と判定し(1Hz=1秒に1回振動)、それによって時間を計っています。32768Hzなのは、2のべき乗だと機会が理解し易く、振動数が少な過ぎると誤差が大きくなりやすく、振動数が多過ぎると安定しにくいので誤差を起こしやくなってしまうためです。
 で、乱数フレームは基本的に毎秒60回推移のようです。上で言えば32768/60回振動した所で推移させれば良いのです。厳密には割り切れていないので、極めて長い時間観測していればズレていくかも知れません。普通にプレイする上では無関係な話ですが。
 よって1/60秒毎に推移していく事になります。1刹那が1/75秒なので、これが極めて僅かな時間である事が理解出来るかと思います。例外的にFF5(の開始時)等はフレームの推移速度がかなり遅いので、人間の反応速度でも対応出来ます。
 どんなに短いと言っても開始時点の乱数テーブルにおける位置は決まっているので、電源投入時から目的の行動までの所要時間をボタン押しっぱなし等で完全に固定できれば同じ状況を繰り返せます。ロマサガ3等で良く利用される状況再現法はこの原理を利用しています。


関数型

 詳しくはよく知りませんが、基本は乱数テーブル型と同じです。
 違うのは乱数を乱数テーブルからではなく、元の数に関数に代入して順番に乱数を作り出していくことです。行動によっ利用する関数を変えるなどすれば、乱数テーブル型よりも複雑に乱数を作り出していくことが出来ます。
 主にGBのサガシリーズで利用されているようですが、実態はよく知りません。






ページ表紙へ >  TOPへ

inserted by FC2 system