SophiaFramework UNIVERSE 5.3 |
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();
コンストラクタ/デストラクタ |
---|
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
) 乱数の種を設定します。
|
[ public, explicit ] SFXLCGRandom( UInt32 seed = 0 // 乱数の生成に使用する種 );
このコンストラクタでは、 引数に乱数のシードを指定できます。
seed 引数に 0 を指定した場合、 または seed 引数に何も指定しなかった場合は、 BREW API GETUPTIMEMS 関数の戻り値である、 デバイスに電源が投入されてから経過した時間(ミリ秒)がシードになります。
[ public ] Bool GetBool(Void);
Bool 型の乱数
この関数は、Bool 型の乱数を生成します。
具体的には、 線形合同法のアルゴリズムを使用して符号なしの 48 ビット整数の乱数を生成し、 その乱数の最下位から 41 ビット目を Bool 型に変換して返します。
[ public ] Float32 GetFloat32(Void);
Float32 型の乱数(0.0 以上 1.0 未満)
この関数は、Float32 型の乱数(0.0 以上 1.0 未満)を生成します。
具体的には、 線形合同法のアルゴリズムを使用して符号なしの 48 ビット整数の乱数を生成し、 その乱数の上位 24 ビットを 16777216 で割った値を Float32 型に変換して返します。
[ public ] Float64 GetFloat64(Void);
Float64 型の乱数(0.0 以上 1.0 未満)
この関数は、Float64 型の乱数(0.0 以上 1.0 未満)を生成します。
具体的には、 線形合同法のアルゴリズムを使用して符号なしの 48 ビット整数の乱数を 2 つ生成し、 それぞれの乱数から上位 26 ビットと上位 27 ビットを抽出・合成して 53 ビットにしてから、 9007199254740992 で割った値を Float64 型に変換して返します。
[ public ] SInt08 GetSInt08(Void);
SInt08 型の乱数
この関数は、SInt08 型の乱数を生成します。
具体的には、 線形合同法のアルゴリズムを使用して符号なしの 48 ビット整数の乱数を生成し、 その乱数から上位 8 ビットを抽出して SInt08 型に変換して返します。
[ public ] SInt16 GetSInt16(Void);
SInt16 型の乱数
この関数は、SInt16 型の乱数を生成します。
具体的には、 線形合同法のアルゴリズムを使用して符号なしの 48 ビット整数の乱数を生成し、 その乱数から上位 16 ビットを抽出して SInt16 型に変換して返します。
[ public ] SInt32 GetSInt32(Void);
SInt32 型の乱数
この関数は、SInt32 型の乱数を生成します。
具体的には、 線形合同法のアルゴリズムを使用して符号なしの 48 ビット整数の乱数を生成し、 その乱数から上位 32 ビットを抽出して SInt32 型に変換して返します。
[ public ] SInt64 GetSInt64(Void);
SInt64 型の乱数
この関数は、SInt64 型の乱数を生成します。
具体的には、 線形合同法のアルゴリズムを使用して符号なしの 48 ビット整数の乱数を 2 つ生成し、 それぞれの乱数から上位 32 ビットを抽出・合成して SInt64 型に変換して返します。
[ public ] UInt08 GetUInt08(Void);
UInt08 型の乱数
この関数は、UInt08 型の乱数を生成します。
具体的には、 線形合同法のアルゴリズムを使用して符号なしの 48 ビット整数の乱数を生成し、 その乱数から上位 8 ビットを抽出して UInt08 型に変換して返します。
[ public ] UInt16 GetUInt16(Void);
UInt16 型の乱数
この関数は、UInt16 型の乱数を生成します。
具体的には、 線形合同法のアルゴリズムを使用して符号なしの 48 ビット整数の乱数を生成し、 その乱数から上位 16 ビットを抽出して UInt16 型に変換して返します。
[ public ] UInt32 GetUInt32(Void);
UInt32 型の乱数
この関数は、UInt32 型の乱数を生成します。
具体的には、 線形合同法のアルゴリズムを使用して符号なしの 48 ビット整数の乱数を生成し、 その乱数から上位 32 ビットを抽出して UInt32 型に変換して返します。
[ public ] UInt64 GetUInt64(Void);
UInt64 型の乱数
この関数は、UInt64 型の乱数を生成します。
具体的には、 線形合同法のアルゴリズムを使用して符号なしの 48 ビット整数の乱数を 2 つ生成し、 それぞれの乱数から上位 32 ビットを抽出・合成して UInt64 型に変換して返します。
この関数は、乱数の生成に使用する種を設定します。
seed に 0 を指定した場合、デバイスに電源が投入されてから経過した時間などを元に、 自動的に種が設定されます。 ただし、時間を取得できない場合には、seed = 0x1234ABCD になります。
Copyright(c) 2002 - 2024 Sophia Cradle Incorporated All Rights Reserved. |