跳转至

RANDOMIZE, DUMPRAND, INITRAND

関数名 引数 戻り値
RANDOMIZE int なし
DUMPRAND なし なし
INITRAND なし なし

API

RANDOMIZE int
DUMPRAND
INITRAND
RAND:Xで得られる乱数を制御するための命令です。

RANDOMIZE命令は指定した値で乱数を初期化します。
同じ値で初期化したならば、RANDは必ず同じ結果を返します。
PRINTDATASTRDATAに関しても同じ結果を返します。

DUMPRANDは現在の乱数の状態をRANDDATA変数に保存します。
INITRANDRANDDATA変数に保存したデータを読み出します。
DUMPRANDを行う前にINITRANDを行ってしまわないように注意してください。
RANDDATA変数の中身が不適当な場合、RANDが正常に動作しなくなります。

例文

PRINTFORML {RAND:100000}/{RAND:100000}/{RAND:100000}/{RAND:100000}/{RAND:100000}/{RAND:100000}
RANDOMIZE 23478612
PRINTFORML {RAND:100000}/{RAND:100000}/{RAND:100000}/{RAND:100000}/{RAND:100000}/{RAND:100000}
RANDOMIZE 23478612
PRINTFORML {RAND:100000}/{RAND:100000}/{RAND:100000}/{RAND:100000}/{RAND:100000}/{RAND:100000}
DUMPRAND
PRINTFORML {RAND:100000}/{RAND:100000}/{RAND:100000}/{RAND:100000}/{RAND:100000}/{RAND:100000}
INITRAND
PRINTFORML {RAND:100000}/{RAND:100000}/{RAND:100000}/{RAND:100000}/{RAND:100000}/{RAND:100000}
INITRAND
PRINTFORML {RAND:100000}/{RAND:100000}/{RAND:100000}/{RAND:100000}/{RAND:100000}/{RAND:100000}

結果

92539/49469/48337/15839/48368/1604
34536/91889/81167/22434/87922/95565
34536/91889/81167/22434/87922/95565
68286/10690/68868/82610/90769/60789
68286/10690/68868/82610/90769/60789
68286/10690/68868/82610/90769/60789

上記の結果のうち、最初の行は不定です。実行するたびに結果が変わります。
2行目、3行目は同じ値でRANDOMIZEした直後なので必ずこの結果になります。
4行目の前にDUMPRAND命令を実行しています。
5行目の前にINITRAND命令を行うことで、RANDの状態をDUMPRAND命令で保存した状態まで戻しています。
そのため、4行目と5行目は結果が同じになっています。
6行目では再度INITRAND命令を行うことで、繰り返し同じ結果を得ています。
RANDDATA変数はセーブされる変数なので、セーブ前にDUMPRANDを行い、ロード直後にINITRANDを行うことで同じ乱数状態を続けて使うことができます。

ヒント

命令のみ対応しています。