32ビットの乱数を生成する方法

1025 ワード

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; }