#include "dkcOSIndependent.h"
#include <math.h>
dkcMath.hのインクルード依存関係図
このグラフは、どのファイルから直接、間接的にインクルードされているかを示しています。
構成 | |
struct | dkc_XorShiftRandomNumberGenerator |
マクロ定義 | |
#define | M_PI 3.14159265358979323846 |
何故定義されとらんのだ!!!ヽ(`Д´)ノムキィ | |
#define | dkcmPrime79(n) ((n * n) - (79 * n) + 1601) |
ハッカーの楽しみ ( 日本語版 Hacker's Delight ) 第16章 素数に関する式 p.290より | |
型定義 | |
typedef dkc_XorShiftRandomNumberGenerator | DKC_XORSHIFT_RNG |
関数 | |
DKC_EXTERN void WINAPI | dkcSrand (ULONG *seed, ULONG num) |
C言語の標準srand()を種値(ステート)を外部に保存できるようにしたもの | |
DKC_EXTERN int WINAPI | dkcRand (ULONG *seed) |
C言語の標準rand()を種値(ステート)を外部に保存できるようにしたもの | |
DKC_EXTERN int WINAPI | dkcRandom (ULONG *seed, ULONG Max_) |
0からMax_までの乱数を出力する。 | |
DKC_EXTERN int WINAPI | dkcSqrtInit () |
DKC_EXTERN float WINAPI | dkcSqrtFast (float a) |
DKC_EXTERN int WINAPI | dkcFloatToInt (float a) |
DKC_INLINE void | dkcXorShiftRNG128DefaultInit (DKC_XORSHIFT_RNG *p) |
DKC_INLINE void | dkcXorShiftRNG128Init (DKC_XORSHIFT_RNG *p, uint32 seed) |
この関数が正解かどうかは不明 | |
DKC_INLINE uint32 | dkcXorShiftRNG128 (DKC_XORSHIFT_RNG *p) |
DKC_EXTERN uint32 WINAPI | dkcPrime79 (uint32 n) |
param n[in] 0から79までの数を入れる |
dkcMath.h で定義されています。
|
ハッカーの楽しみ ( 日本語版 Hacker's Delight ) 第16章 素数に関する式 p.290より
参照元 dkcPrime79(). |
|
何故定義されとらんのだ!!!ヽ(`Д´)ノムキィ
|
|
|
|
|
|
param n[in] 0から79までの数を入れる
参照先 dkcmFORCE_NOT_ASSERT, と dkcmPrime79. 00047 { 00048 dkcmFORCE_NOT_ASSERT(n > 79); 00049 return dkcmPrime79(n); 00050 }
|
|
C言語の標準rand()を種値(ステート)を外部に保存できるようにしたもの
参照元 dkcRandom(). 00036 { 00037 (*seed) = (*seed) * 1103515245L + 12345; 00038 return (unsigned)((*seed) / 65536L) % 32768U; 00039 }
|
|
0からMax_までの乱数を出力する。
参照先 dkcRand(). 参照元 dkcRandomV(). 00042 { 00043 return dkcRand(seed) * (Max_ ) / SHRT_MAX; 00044 }
|
|
|
|
|
|
C言語の標準srand()を種値(ステート)を外部に保存できるようにしたもの
|
|
参照先 uint32, dkc_XorShiftRandomNumberGenerator::w, dkc_XorShiftRandomNumberGenerator::x, dkc_XorShiftRandomNumberGenerator::y, と dkc_XorShiftRandomNumberGenerator::z. 00060 { 00061 uint32 t; 00062 uint32 x,y,z,w; 00063 x = p->x;y = p->y;z = p->z;w = p->w; 00064 t=(x^(x<<11)); 00065 x=y; 00066 y=z; 00067 z=w; 00068 ( w=(w^(w>>19))^(t^(t>>8)) ); 00069 00070 p->x = x;p->y =y;p->z = z;p->w = w; 00071 return w; 00072 }
|
|
参照先 dkc_XorShiftRandomNumberGenerator::w, dkc_XorShiftRandomNumberGenerator::x, dkc_XorShiftRandomNumberGenerator::y, と dkc_XorShiftRandomNumberGenerator::z. 00043 { 00044 //static unsigned long x=123456789,y=362436069,z=521288629,w=88675123; 00045 p->x = 123456789; 00046 p->y = 362436069; 00047 p->z = 521288629; 00048 p->w = 88675123; 00049 }
|
|
この関数が正解かどうかは不明
参照先 dkc_XorShiftRandomNumberGenerator::w, dkc_XorShiftRandomNumberGenerator::x, dkc_XorShiftRandomNumberGenerator::y, と dkc_XorShiftRandomNumberGenerator::z. 00052 { 00053 00054 p->x = seed; 00055 p->y = 362436069; 00056 p->z = 521288629; 00057 p->w = 88675123; 00058 }
|