EXCELを使った各種ゲーム支援ツールにはサイコロの代わりとして
乱数を発生させる関数を使っている。
中でも最優秀と言われるメルセンヌ・ツイスタを愛用している。
しかし、間違った思い込みがあったので、後の為にメモしておく。
1.背景
Nightfighter Ace支援ツールのテストプレイをしている時に、
支援ツールのオリジナルファイルからゲームをスタートさせると、
同じ設定・選択を続けると同じ結果が現れる。
乱数なのに何故なのか理解できなかった。→これが間違った思い込み。
2.理由
メルセンヌ・ツイスタは再現性のある乱数を発生させる為。
下図左はEXCELで乱数を6ケ発生させた結果である。
同じファイルを使って何度やっても結果は同じになる(ファイルを上書き保存しないこと)。
下図右は結果を取る前に乱数を0回、1回、2回と発生させておいた(読み捨て)。
しかし、その後の結果は枠内のように決められた値と順番になる。
3.乱数を使う時の注意事項
(1)再現性がある事を念頭におく。
(2)Nightfighter Aceのような物語のあるゲームでは、再スタートする場合に
オリジナルファイルを使うのは避ける(同じ流れになるので)。
その為、支援ツールでは初期化処理を追加した。これにより乱数の流れは
前回と違うので同じ設定・選択をしても結果が違ってくる。
(3)バタイユゲームのような多数のユニットが交戦するような場合は、
処理する内容(射撃戦・白兵戦・士気チェック)や対象ユニット・順番が
色々なので再スタートしても同じ流れにはならない。
→その為、再現性のあることに気付かない。
4.参考資料
下記のWEBページにお世話になりました。ありがとうございます。
・良い乱数・悪い乱数
・Mersenne Twister Home Page
・メルセンヌ・ツイスタWiki
<個人的な感想>
いや~、思い込みは恐ろしい。乱数に再現性があるとは思わなかった・・・。