FX・日経225先物の分析・検証と自動売買を支援

【プログラミング】符号付き乱数の発生方法

fortran言語での符号付き乱数の発生方法を紹介する。

方法1. マイナスかプラスを乱数で生成する

まず、元になる乱数は、

call random_number(rand1)

で生成しておく。

(-1)^nで考える。
n=0なら (-1)^0=1
n=1なら (-1)^1=-1

となるので、0か1を乱数で生成すれば良い。

乱数の値が0~0.5なら0で
乱数の値が0.5~1なら1とするためには

int(rand1+0.5d0)

とすれば、0か1が一様に発生する。つまり、

(符号)=(-1)**int(rand1+0.5d0)

とすれば良い。

方法2. 正の値で生成したものを負の値までオフセット

考え方にもよるが、こちらの方が主流かもしれない。

まず、必要な正の区間の2倍の区間で値を生成する。

例えば、-1~1を発生させたいなら、0~2まで生成する。

例えば、-100〜100を発生させたいなら、0〜200まで生成する。

その後、生成した値を半分だけ不側にオフセットすれば良い。

例えば、-1〜1の生成方法は、

(-1から1の値)=rand1*2d0-1d0

となる。

つまり、-n〜nまでなら

(-nからnまでの値)=rand1*2d0-dble(n)

 となる。