32ビットの乱数を生成する方法
CStringA CreateHex(int max)
{
CStringA precision;
precision.Format("%x",max);
int size = precision.GetLength();
int num_align = size%4; //
if(num_align <=4)
num_align = 4;
else if (num_align <=8) // 32 , max ,
num_align = 8; // 32 10 4294967295,16 FFFFFFFF(8 )
int num_for = 32/num_align; //
CStringA out_put;
srand(GetTickCount()); // ,
for (int i=0;i<num_for;i++)
{
int num = rand()%max; // 0~max ( max )
out_put.AppendFormat("%0*x",num_align,num); // 0
Sleep(2); //
}
return out_put;
}
テスト:
int _tmain(int argc, _TCHAR* argv[])
{
int fmax = 800;
typedef set<CStringA> SetArray;
SetArray ArrayHex;
for (int i =0;i<1000;i++)
{
CStringA _hex = CreateHex(fmax).GetBuffer();
printf("%s
",_hex);
if (ArrayHex.find(_hex) != ArrayHex.end())
assert(0); // 1000 ,
ArrayHex.insert(_hex);
}
return TRUE;
}