C++Builder2009では複数の乱数ジェネレータが用意されている。
使用するときは、C++系かVCL系かどちらか一方に統一した方が
ソースコートがわかりやすくなる。
rand
#include <stdlib.h>
int rand(void);
0 以上 RAND_MAX 以下の乱数を返す。
標準ライブラリに含まれ、移植性が高い。
アルゴリズムの実装はライブラリによって異なる。
古典的な線形合同法のアルゴリズムを使用していると、
乱数の精度が低いという問題がある。
C++Builder2009では32乗周期の乗算合同法乱数ジェネレータを使用している。
random
#include <stdlib.h>
int random(int num);
0~(num-1)の範囲の乱数を返す。
Win32でのみ使用可能。
stdlib.hで定義されているマクロ。
(int)(_lrand()%(num)
_lrand
#include <stdlib.h>
long _lrand(void);
長い乱数を生成する関数。
2^64周期の乗算合同法乱数ジェネレータを使用して、
0~2^31-1の範囲の連続疑似乱数を返す。
Random
int Random(const int ARange);
Extended Random();
VCLが提供するDelphi互換の関数。
0 <= X < Range の範囲にある乱数を返す。
RandomRange
int RandomRange(const int AFrom, const int ATo);
VCLが提供するDelphi互換の関数。
AFrom以上ATo未満の範囲で乱数を返す。
Math.RandG
#include <Math.hpp>
Extended RandG(Extended Mean, Extended StdDev);
VCLが提供するDelphi互換の関数。
ガウス分布(正規分布)を使って乱数を生成する。