前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3
SFXLCGRandom
線形合同法により乱数を生成するクラスです。
#include <SFXLCGRandom.h.hpp>
class SFXLCGRandom;
SFMTYPEDEFCLASS(SFXLCGRandom)

解説

SFXLCGRandom クラスは、 UNIX の drand48 関数と同じアルゴリズムを使用して 48 ビットの乱数を生成するクラスです。

このクラスは、 線形合同法と 48 ビット整数演算により、擬似乱数を高速に生成します。

使用例

// コンストラクタの引数にシードを指定しない場合は、
// デバイスに電源が投入されてからの経過時間(ミリ秒)がシードになる
SFXLCGRandom random;

// SINT32_MINIMUM 〜 SINT32_MAXIMUM の間の SInt32 型の乱数を生成する
SInt32 n1 = random.GetSInt32(); 

// シードを設定する
random.Randomize(3456);         

// 0 〜 UINT08_MAXIMUM の間の UInt08 型の乱数を生成する
UInt08 n2 = random.GetUInt08();

参照

SFXBrewRandom | SFXMTRandom

メンバ

コンストラクタ/デストラクタ
SFXLCGRandom( UInt32 seed = 0 )
SFXLCGRandom クラスのコンストラクタです。
パブリック関数
Bool GetBool( Void )
Bool 型の乱数を生成します。
Float32 GetFloat32( Void )
Float32 型の乱数(0.0 以上 1.0 未満)を生成します。
Float64 GetFloat64( Void )
Float64 型の乱数(0.0 以上 1.0 未満)を生成します。
SInt08 GetSInt08( Void )
SInt08 型の乱数を生成します。
SInt16 GetSInt16( Void )
SInt16 型の乱数を生成します。
SInt32 GetSInt32( Void )
SInt32 型の乱数を生成します。
SInt64 GetSInt64( Void )
SInt64 型の乱数を生成します。
UInt08 GetUInt08( Void )
UInt08 型の乱数を生成します。
UInt16 GetUInt16( Void )
UInt16 型の乱数を生成します。
UInt32 GetUInt32( Void )
UInt32 型の乱数を生成します。
UInt64 GetUInt64( Void )
UInt64 型の乱数を生成します。
Void Randomize( UInt32 seed = 0 )
乱数の種を設定します。

SFXLCGRandom::SFXLCGRandom
SFXLCGRandom クラスのコンストラクタです。
[ public, explicit ]
SFXLCGRandom(
    UInt32 seed = 0   // 乱数の生成に使用する種
);

解説

このコンストラクタでは、 引数に乱数のシードを指定できます。

seed 引数に 0 を指定した場合、 または seed 引数に何も指定しなかった場合は、 BREW API GETUPTIMEMS 関数の戻り値である、 デバイスに電源が投入されてから経過した時間(ミリ秒)がシードになります。

参照

SFXHelper::getuptimems | BREW API GETUPTIMEMS


SFXLCGRandom::GetBool
Bool 型の乱数を生成します。
[ public ]
Bool GetBool(Void);

戻り値

Bool 型の乱数

解説

この関数は、Bool 型の乱数を生成します。

具体的には、 線形合同法のアルゴリズムを使用して符号なしの 48 ビット整数の乱数を生成し、 その乱数の最下位から 41 ビット目を Bool 型に変換して返します。


SFXLCGRandom::GetFloat32
Float32 型の乱数(0.0 以上 1.0 未満)を生成します。
[ public ]
Float32 GetFloat32(Void);

戻り値

Float32 型の乱数(0.0 以上 1.0 未満)

解説

この関数は、Float32 型の乱数(0.0 以上 1.0 未満)を生成します。

具体的には、 線形合同法のアルゴリズムを使用して符号なしの 48 ビット整数の乱数を生成し、 その乱数の上位 24 ビットを 16777216 で割った値を Float32 型に変換して返します。


SFXLCGRandom::GetFloat64
Float64 型の乱数(0.0 以上 1.0 未満)を生成します。
[ public ]
Float64 GetFloat64(Void);

戻り値

Float64 型の乱数(0.0 以上 1.0 未満)

解説

この関数は、Float64 型の乱数(0.0 以上 1.0 未満)を生成します。

具体的には、 線形合同法のアルゴリズムを使用して符号なしの 48 ビット整数の乱数を 2 つ生成し、 それぞれの乱数から上位 26 ビットと上位 27 ビットを抽出・合成して 53 ビットにしてから、 9007199254740992 で割った値を Float64 型に変換して返します。


SFXLCGRandom::GetSInt08
SInt08 型の乱数を生成します。
[ public ]
SInt08 GetSInt08(Void);

戻り値

SInt08 型の乱数

解説

この関数は、SInt08 型の乱数を生成します。

具体的には、 線形合同法のアルゴリズムを使用して符号なしの 48 ビット整数の乱数を生成し、 その乱数から上位 8 ビットを抽出して SInt08 型に変換して返します。


SFXLCGRandom::GetSInt16
SInt16 型の乱数を生成します。
[ public ]
SInt16 GetSInt16(Void);

戻り値

SInt16 型の乱数

解説

この関数は、SInt16 型の乱数を生成します。

具体的には、 線形合同法のアルゴリズムを使用して符号なしの 48 ビット整数の乱数を生成し、 その乱数から上位 16 ビットを抽出して SInt16 型に変換して返します。


SFXLCGRandom::GetSInt32
SInt32 型の乱数を生成します。
[ public ]
SInt32 GetSInt32(Void);

戻り値

SInt32 型の乱数

解説

この関数は、SInt32 型の乱数を生成します。

具体的には、 線形合同法のアルゴリズムを使用して符号なしの 48 ビット整数の乱数を生成し、 その乱数から上位 32 ビットを抽出して SInt32 型に変換して返します。


SFXLCGRandom::GetSInt64
SInt64 型の乱数を生成します。
[ public ]
SInt64 GetSInt64(Void);

戻り値

SInt64 型の乱数

解説

この関数は、SInt64 型の乱数を生成します。

具体的には、 線形合同法のアルゴリズムを使用して符号なしの 48 ビット整数の乱数を 2 つ生成し、 それぞれの乱数から上位 32 ビットを抽出・合成して SInt64 型に変換して返します。


SFXLCGRandom::GetUInt08
UInt08 型の乱数を生成します。
[ public ]
UInt08 GetUInt08(Void);

戻り値

UInt08 型の乱数

解説

この関数は、UInt08 型の乱数を生成します。

具体的には、 線形合同法のアルゴリズムを使用して符号なしの 48 ビット整数の乱数を生成し、 その乱数から上位 8 ビットを抽出して UInt08 型に変換して返します。


SFXLCGRandom::GetUInt16
UInt16 型の乱数を生成します。
[ public ]
UInt16 GetUInt16(Void);

戻り値

UInt16 型の乱数

解説

この関数は、UInt16 型の乱数を生成します。

具体的には、 線形合同法のアルゴリズムを使用して符号なしの 48 ビット整数の乱数を生成し、 その乱数から上位 16 ビットを抽出して UInt16 型に変換して返します。


SFXLCGRandom::GetUInt32
UInt32 型の乱数を生成します。
[ public ]
UInt32 GetUInt32(Void);

戻り値

UInt32 型の乱数

解説

この関数は、UInt32 型の乱数を生成します。

具体的には、 線形合同法のアルゴリズムを使用して符号なしの 48 ビット整数の乱数を生成し、 その乱数から上位 32 ビットを抽出して UInt32 型に変換して返します。


SFXLCGRandom::GetUInt64
UInt64 型の乱数を生成します。
[ public ]
UInt64 GetUInt64(Void);

戻り値

UInt64 型の乱数

解説

この関数は、UInt64 型の乱数を生成します。

具体的には、 線形合同法のアルゴリズムを使用して符号なしの 48 ビット整数の乱数を 2 つ生成し、 それぞれの乱数から上位 32 ビットを抽出・合成して UInt64 型に変換して返します。


SFXLCGRandom::Randomize
乱数の種を設定します。
[ public ]
Void Randomize(
    UInt32 seed = 0   // 乱数の生成に使用する種
);

解説

この関数は、乱数の生成に使用する種を設定します。

seed に 0 を指定した場合、デバイスに電源が投入されてから経過した時間などを元に、 自動的に種が設定されます。 ただし、時間を取得できない場合には、seed = 0x1234ABCD になります。