« Read-Write Lockパターン | メイン | Thread-Per-Messageパターン »

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

トラックバック

このエントリーのトラックバックURL:
http://www.gesource.jp/mt/mt-tb.cgi/893

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2009年01月26日 20:17に投稿されたエントリーのページです。

ひとつ前の投稿は「Read-Write Lockパターン」です。

次の投稿は「Thread-Per-Messageパターン」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.35