首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

哪位高手能帮帮小弟我将下面的代码翻译成Delphi的代码,多谢

2012-03-05 
谁能帮帮我将下面的代码翻译成Delphi的代码,谢谢//一个很棒的随机数发生器#defineCMATH_TEMPERING_SHIFT_U

谁能帮帮我将下面的代码翻译成Delphi的代码,谢谢
//一个很棒的随机数发生器

#define   CMATH_TEMPERING_SHIFT_U(y)(y   > >   11)
#define   CMATH_TEMPERING_SHIFT_S(y)(y   < <   7)
#define   CMATH_TEMPERING_SHIFT_T(y)(y   < <   15)
#define   CMATH_TEMPERING_SHIFT_L(y)(y   > >   18)

class   CRandom
{
private:
//data
unsigned   intrseed;
unsigned   longmt[CMATH_N];
int   mti;
public:
CRandom(void);
unsigned   int   Random(unsigned   int   n);
void   SetRandomSeed(unsigned   int   n);
unsigned   int   GetRandomSeed(void);
void   Randomize(void);
};

CRandom::CRandom(void)
{
rseed   =   1;
mti   =   CMATH_N   +   1;
}

unsigned   int   CRandom::Random(unsigned   int   n)
{
unsigned   long   y;
static   unsigned   long   mag01[2]   =   {0x0,   CMATH_MATRIX_A};

if(n   ==   0)
return   (0);
if(mti   > =   CMATH_N)
{
int   kk;
if(mti   ==   CMATH_N   +   1)
SetRandomSeed(4357);
for(kk   =   0;   kk   <   CMATH_N   -   CMATH_M;   kk++)
{
y   =   (mt[kk]&CMATH_UPPER_MASK)   |   (mt[kk   +   1]   &   CMATH_LOWER_MASK);
mt[kk]   =   mt[kk   +   CMATH_M]   ^   (y   > >   1)   ^   mag01[y   &   0x1];
}
for(;   kk   <   CMATH_N   -   1;   kk++)
{
y   =   (mt[kk]&CMATH_UPPER_MASK)   |   (mt[kk   +   1]   &   CMATH_LOWER_MASK);
mt[kk]   =   mt[kk   +   (CMATH_M   -   CMATH_N)]   ^   (y   > >   1)   ^   mag01[y   &   0x1];

mti   =   0;
}
}

y     =   mt[mti   +   1];
y   ^=   CMATH_TEMPERING_SHIFT_U(y);
y   ^=   CMATH_TEMPERING_SHIFT_S(y)   &   CMATH_TEMPERING_MASK_B;
y   ^=   CMATH_TEMPERING_SHIFT_T(y)   &   CMATH_TEMPERING_MASK_C;
y   ^=   CMATH_TEMPERING_SHIFT_L(y);

return   (y   &   n)
}

void   CRandom::SetRandomSeed(unsigned   int   n)
{
mt[0]   =   n   &   0xffffffff;
for(mti   =   1;   mti   <   CMATH_N;   mti++)
mt[mti]   =   (69069   *   mt[mti   -   1])   &   0xffffffff;
rseed   =   n;
}

unsigned   int   CRandom::GetRandomSeed(void)
{
return   (rseed);
}

void   CRandom::Randomize(void)
{
SetRandomSeed(time(NULL));
}

[解决办法]
这句什么意思?CMATH_TEMPERING_SHIFT_U(y)(y > > 11)
其他的好像都好翻译的

[解决办法]
不知棒在哪里?
[解决办法]
定义宏吧,把他写成一个函数吧!
[解决办法]
给分
[解决办法]
有标准随机数函数
Randomize();


Random();

热点排行