rndとrnd2の仕様

あー色々あって気になったんで、調べてみたんじゃよーぎゃわー。

rndについて

乱数を生成する命令。引数を二つ、生成した乱数を格納する変数と、変数の幅を意味する数値を与える。
マニュアルには違うことが書いてあるが、実際には、0から第二引数マイナス1までの間の値を生成する。

第二引数に0を与えた場合
NScripterが止まる。
第二引数に1を与えた場合
0しか発生しない。
第二引数にマイナスの値を与えた場合
第二引数の絶対値を第二引数にしたのと同じ結果が得られる。

rnd2について

乱数を生成する命令。引数を三つ、生成した乱数を格納する変数と、乱数の最小値と最大値を与える。
こちらの方が恐らくはユーザーにとっては直感的であり、引数が多いにも関わらず使うものが多い(と思われる)。

第ニ引数<第三引数
通常通りの結果が得られる。第二引数・第三引数がどちらかあるいは両方ともがマイナスであろうとも、大小関係が保たれるなら仕様通りの結果になる。
第二引数=第三引数
予想通りの結果が得られる。プラスマイナスに関係なく、第二引数・第三引数と同じ結果のみ得られる。
第二引数>第三引数
これが面倒くさい。最初の場合と同じ結果になればいいものを、違う結果が出る。具体的には、第二引数はそのまま、第三引数を以下のように再計算して得られた結果に等しい。

新・第三引数=第二引数×2−旧・第三引数−2

まあ、第二引数と第三引数の大小関係は守っておけと言うことだ。そうすれば難しいことを考えなくて済む。