remove
powerd by nog twitter

RPG INSTITUTE > 乱数解析 > 乱数パターンテーブル 最終更新日 2004/04/09


乱数パターンテーブルとは?

1.乱数パターンテーブルの例

下に示したのはFF2の乱数パターンテーブルの暫定版の一部です。

256段階乱数パターンテーブル(16進数表記:暫定版)

  00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00 69 233 226 21 210 57 177 185 24 95 228 250 249 239 0 192
10 200 100 208 223 49 11 246 139 96 77 152 100 64 90 36 75
20 128 94 64 192 162 98 4 84 82 237 52 157 62 190 141 205
30 13 113 126 113 34 197 24 36 72 135 41 190 121 208 128 86
40 126 20 251 75 200 80 0 172 200 149 236 241 221 228 154 43
50 198 29 203 52 205 88 231 131 88 26 231 44 12 77 160 180
60 128 109 32 6 103 137 192 211 54 64 175 49 218 77 244 98
70 70 164 224 116 8 246 60 213 146 141 39 254 80 233 164 254
80 160 214 47 105 152 173 21 16 60 36 47 18 21 118 214 3
90 159 175 13 163 100 216 149 103 218 72 199 228 111 54 93 167
A0 122 90 139 105 224 67 44 149 71 90 16 58 10 177 157 148
B0 251 29 216 211 49 113 233 5 86 26 111 182 141 154 237 134
C0 182 41 2 205 144 62 218 44 154 123 35 120 131 67 182 173
D0 195 54 187 108 105 241 226 96 239 167 72 251 146 9 123 32
E0 118 59 169 131 195 13 109 137 188 39 85 169 188 177 171 144
F0 7 244 82 248 136 180 241 26 116 123 18 203 186 222 164 31

説明なしにこれの意味がわかった人はすごいです(笑)。

2.乱数パターンテーブルによる確率判定

ここで、何故乱数が発生するかを考えてみましょう。考えられる方法の一つに乱数パターンテーブルを使用するという手段があります。ここでは、便宜上乱数パターンテーブルの一周期を256として、0〜255までの数が1回ずつ登場すると仮定します。この場合は0〜255の数字が出る確率が1/256となり全く同等です。もっと周期が長い場合でも基本的な考え方は同じです。

乱数パターンテーブルを使わずに、何らかの関数を使っている可能性もあります。しかし、関数だったとしても乱数の発生順序は変化しないので以降の説明は成立します。

乱数パターンテーブルを用いて、確率判定を行うとします。まず、分かりやすいように乱数に100/256を掛けて端数を切り捨てたものを用意します。それが次に示したものです。

100段階乱数パターンテーブル(16進数表記)

  00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00 26 91 88 8 82 22 69 72 9 37 89 97 97 93 0 75
10 78 39 81 87 19 4 96 54 37 30 59 39 25 35 14 29
20 50 36 25 75 63 38 1 32 32 92 20 61 24 74 55 80
30 5 44 49 44 13 76 9 14 28 52 16 74 47 81 50 33
40 49 7 98 29 78 31 0 67 78 58 92 94 86 89 60 16
50 77 11 79 20 80 34 90 51 34 10 90 17 4 30 62 70
60 50 42 12 2 40 53 75 82 21 25 68 19 85 30 95 38
70 27 64 87 45 3 96 23 83 57 55 15 99 31 91 64 99
80 62 83 18 41 59 67 8 6 23 14 18 7 8 46 83 1
90 62 68 5 63 39 84 58 40 85 28 77 89 43 21 36 65
A0 47 35 54 41 87 26 17 58 27 35 6 22 3 69 61 57
B0 98 11 84 82 19 44 91 1 33 10 43 71 55 60 92 52
C0 71 16 0 80 56 24 85 17 60 48 13 46 51 26 71 67
D0 76 21 73 42 41 94 88 37 93 65 28 98 57 3 48 12
E0 46 23 66 51 76 5 42 53 73 15 33 66 73 69 66 56
F0 2 95 32 96 53 70 94 10 45 48 7 79 72 86 64 12

そして、次のようにして乱数判定を行います。乱数パターンテーブルの任意の位置から乱数判定を始めることができますが、ここでは便宜上(00)h、つまり一番左上から乱数判定を始めるとします。ここで確率をパーセントとして確率判定を行います。

乱数パターンテーブルによる確率判定

  1. 確率が35%のことを判定するとしてしきい値を35とします。
  2. 乱数が35以上の場合は失敗とします。
  3. まず、(00)hの乱数は26です。2の条件より判定は成功です。
  4. 乱数の判定が終ったら、乱数テーブルの次のところ(01)hに移動します。
  5. 次に(01)hの乱数は91です。2の条件より判定は失敗です。
  6. このようにして、次々に乱数パターンテーブルを使い判定を行います。

(FF)h、つまり表の一番右下まで来たら、次は(00)hに移動するとします。

このようにして、35%を判定した場合の確率は90/256×100=35.16%です。若干誤差は生じますが、この程度なら問題はありません。ちなみにどのような確率を判定しても信頼できる値が得られます。

あくまで、概念の説明です。実際にこのような処理を行われているかどうかは別問題です。FF2ではこのように乱数処理されていると考えていいようです。

3.電源技について

みなさまの中には、ゲームをやっている場合に電源を入れてから同じように行動すると結果が全く同じになったという経験がある方もいると思います。これは電源をいれた時に、乱数パターンテーブルの同じ所から乱数判定が開始するためです。つまり、毎回同じように乱数判定を行うために結果が同じになるということです。

これができる最も有名なゲームはSa・Ga2でしょうね。スルメも電源技を使い第1世界で、HP999(表示上)、各ステータス(防御含む)を99にしましたね。データが飛ぶたびにこれをやっていたら、最終的にはRAMがいかれて使い物にならなくなりましたが(死)。

ただし、この条件を満たすゲームでも、セーブしたときに乱数パターンテーブルの位置もセーブされるゲームの場合は(改良版)電源技をするメリットが少ないです。(FE聖戦、真・女神転生1・2、エスト2など)

4.改良版電源技について

しかし、多くのゲームでは電源技を使うことはできません。一体何故でしょう。簡単に考えれば、乱数パターンテーブルの始まる位置が違うからでしょうが、何故乱数パターンテーブルの始まる場所が違うのかが分かりませんでした。

ところが、瞬丸さんのデータロードから戦闘開始のフレーム数(時間)をまったく同じにできればFF2でも電源技ができるという書き込みにより状況が一変します。(厳密にいえば、セーブした位置によっても戦闘パターンが変化するので違うみたいですが・・・。)この書き込みのあとにいろいろなゲームで改良版電源技を試した結果をこのサイトに掲載する予定です。

つまり、フレーム数に依存して乱数が進んでいると考えられます。条件設定を厳しく設定して、電源を入れてからのフレーム数も全く同じ状態にすれば、完璧に状況を再現できるわけです。(フレーム数を合わせたのが改良点です) ただし、操作はボタン押しっぱなしなどの単純な操作にしないとフレーム数を完璧に合わせるのが不可能なのが問題です。

フレームとは、ゲームで使われている一つ一つのコマ割りのことです。どうやら、1秒間に使われているフレームの数は60のようです。普通にやるとこれを完璧に合わせるのは極めて難しいです。

つまり、ゲームに改良版電源技を適用するということは、フレーム数を完璧に合わせる方法を探す方法を考えることが基本になります。

5.いつ、フレーム数に対応した乱数が進むか

フレーム数によって乱数が進むことを、フレーム数によって乱数が流れると表現します。

スルメが確認した範囲では次の3種類で別々に処理されている場合が多いです。

  1. タイトル画面(データロード画面)
  2. フィールド画面(メニュー画面)
  3. 戦闘画面

例えば、Sa・Ga2の場合1〜3の全てにおいてフレーム数によって乱数が流れることがありません。そのために電源技が可能なゲームとして最も有名なわけです。

ただし、同じゲームでも乱数テーブルによって、フレーム数による乱数の影響が異なる場合があります。FF2の場合で説明します。敵遭遇用の乱数テーブルやフィールド用乱数テーブルは1〜3の全てにおいて乱数が流れることがありません。だから、敵出現歩数や敵の種類を完璧に予想できるわけです。ただし、戦闘用乱数テーブルは2において乱数が流れます。そのため、昔は戦闘パターンは再現できないと思っていたわけです。

ゲームに電源技を適用する場合、いつフレーム数によって乱数が流れて、いつフレーム数によって乱数が流れないかが理解できればどうにかなる場合が多いです。

しかし、必ずしも1フレームで乱数が流れるとは限りません。FF5の敵遭遇用の乱数テーブルがその例です。1においてフレーム数によって乱数が流れることが分かっています。しかし、タイトル画面でスルメの秒間10連射程度の遅い連射をすると、出現する敵の種類を改良版電源技によって固定できます。しかし、タイトル画面で1秒ぐらい待つと敵の種類が変化するので、フレーム数によって乱数が流れることは間違いありません。このように、ある程度フレーム数がたまらないと乱数が流れないゲームの場合は単純な操作や連射パッドがあれば、十分改良版電源技を使うことが可能になります。

6.乱数表の初期位置やリセットされる条件

基本的に乱数表の初期位置などを決定するのはハードです。

乱数表のリセット条件

FC(NFC) 電源OFFして数秒で乱数表がリセット
SFC(SFCJr.) リセットボタンを押すと乱数表がリセット(パッドリセットは不可)
GB(GBA) 電源をOFFにして画面の液晶の線が切れると乱数表がリセット
SGB 電源をOFFにして約10秒

次世代機(笑)については調べていません。

そして、乱数表の初期位置もハードに依存します。

特に初期ロットのハードの場合は乱数表の初期位置が違うことが多いことが注目されます。また、GBAとGBCが乱数表の初期位置が同じなのが謎です。GBとGBCは違うのに(笑)

スルメの経験からいえば、壊れかけたハードは普通のハードと乱数表の初期位置が違うことが多いことがあります。不安定なハードは普通のハードとちょっと違うんでしょうかね(笑)。手持ちのハードのパターンがいきなり変わった場合は寿命が近いのかもしれません(核爆)。そういえば、うちのSFCJr.は電源を入れて30分ぐらいは乱数表の初期位置SFCと違うけどそのうち安定するなひょっとして壊れかけかも(核爆)。


RPG INSTITUTE > 乱数解析 > 乱数パターンテーブル 公開開始 2001/1/13