*算術処理関数 [#sb2a65c9]
RIGHT:[[「ヘルプ補足」諸注意>../「ヘルプ補足」諸注意]]	
#contents


**Random関数 [#f2c28c18]
//関連項目:
//#hr

''書式'' Random('''数値''')

&color(red){◆保証未確認動作'''(確認ver 2.2.25)'''};
'''数値''' <= 1 なら常に '''数値''' を返します

#hr

&color(red){◆保証未確認動作'''(確認ver 2.2.25)'''};
オプション「[[乱数系列非保存>../Optionコマンド#ccbbca8c]]」が''オフ''の場合、4096個の乱数を使いまわします。
したがって、4097 個以上の乱数を続けて使うと同じ値が繰り返し出てきてしまいます。

#hr

&color(red){◆保証未確認動作'''(確認ver 2.2.25)'''};
''この記事のRnd()関数についての部分はネット情報によるものです。&br;SRC上での実動テストは行われていません''

Random関数は、VB5の Rnd()関数を使っています。
この関数の精度は、2 ^ 24 =約1677万です。なので、これを越える数を引数に使っても正確な結果は得られません。

この関数の周期も、2 ^ 24 =約1677万で、約1677万回使えば元の値に戻ります。 しかし、乱数ダネのパターン数は 2 ^ 16 = 65536種類しかありません。
たいていの場合はこれで十分ですが、非常に多くのパターンからランダムに選びたいときには不都合が生じることもあります。

また、VBの Rnd()関数は、線形合同法という方法で擬似乱数を求めています。この方法はいくつか欠点があります。とりわけ、連続して出された複数の乱数値の組み合わせに相関があり、良好な乱数にはなりません。
たとえば、マップ上の座標をランダムに出そうとした場合、X座標と Y座標に相関ができてしまい、偏りがでます。
この欠点は、いくつか乱数をプールしておきその中からランダムに結果値を選ぶようなサブルーチンを組むと緩和されます。



----
**コメント [#w38c4d5a]

#comment