RGSSn/乱数固定

Last-modified: 2018-04-22 (日) 00:18:12

任意サイズの乱数テーブルを生成して、乱数をそこから順番に読み込んでいってはテーブルの末尾に新たな乱数を生成していくことで、セーブ&ロードによるランダム要素における任意結果の取得を防ぐことができるよ。
もしくは、前回の乱数値をシードとして使い、またそれをセーブデータに記録しておくことで、開始時の値に応じてそれ以降の乱数が完全に同じように変化していくようにできるよ。
RGSS(XP)およびRGSS2(VX)にも対応しているよ。(RGSS2(VX)のみ動作未確認)
ただし、Ver1.52より後のバージョンではRGSS3(VXAce)以外での動作は保証できないよ。

スクリプト
スクリプト(Ver1.52)

更新履歴

更新履歴

Ver 1.55

Array#sample, Array#shuffle, Array#shuffle!に若干ムリヤリ対応。

Ver 1.53

ゲームオブジェクトが生成されていない状態では従来の乱数を返すように変更。
正常に使用できないため、範囲式を用いた乱数をサポート停止。

Ver 1.52

RGSS(XP)でF12リセットを行った際にSystemStackErrorが発生する問題を修正。

Ver 1.50

RGSS(XP)で実際に動かした際に発生したエラーに対処すべく、処理全体を見直し。
不具合のもととなったため、Ver 1.25で追加した設定を削除。

Ver 1.35

本来Kernel.#randでは使用できない『始端と終端が非数値であるRangeクラスを引数として乱数を取得』に対応。何故対応した

Ver 1.32

乱数の周期が短くなっている可能性があったため、乱数シードの生成処理を変更。
初期シードとテーブルサイズの設定項目を個別化。
その他、細かい仕様変更。

Ver 1.25

毎フレーム乱数を進める設定を追加。(この素材の目的に著しく反するため非推奨。ナゼ作った
乱数初期化処理を微妙に変更。(実際の動作には変更なし)

Ver 1.23

前回乱数参照型でも乱数の初期化ができるように変更。

Ver 1.22

なんか色々誤字ったり変なミスとかあったから修正。

Ver 1.20

前回の乱数をシードとして使うことで、セーブデータのサイズを大幅に縮小できる設定を追加。

Ver 1.10

RGSS(XP)・RGSS2(VX)・RGSS3(VXAce)いずれもほぼ同じように動くように変更。

Ver 1.07

RGSS3(VXAce)以外でもニューゲーム選択時に乱数テーブルを初期化できるように変更。

Ver 1.05

RGSS(XP)およびRGSS2(VX)に暫定的に対応。

Ver 1.02

乱数テーブル初期化で無限ループに陥る不具合を修正。

Ver 1.00

公開。