C++Builder2009の乱数ジェネレータ

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互換の関数。
ガウス分布(正規分布)を使って乱数を生成する。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です