如何生成一个32位的随机数
2012-07-04 01:28
399 查看
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\n",_hex); if (ArrayHex.find(_hex) != ArrayHex.end()) assert(0); // 循环1000次若有重复,则断言 ArrayHex.insert(_hex); } return TRUE; }
相关文章推荐
- c语言中如何生成1个0到1的随机数
- c++如何生成随机数
- http://www.dewen.net.cn/q/15800/php如何生成十进制00到20之间的2位随机数
- C语言如何生成随机数
- 在oracle数据库中如何生成UUID字段,生成随机数
- 如何生成一个含有随机数的字符串
- c++如何生成随机数
- C语言如何生成规定范围内的随机数
- 如何生成在某个区间的随机数
- JAVA中如何随机生成确定范围中的随机数
- sql如何生成不重复的随机数以及有效位
- 如何用C#生成不重复的随机数
- 在javascript中随机数 math random如何生成指定范围数值的随机数
- 技术贴:电脑随机数是如何生成的?
- 如何用java生成指定范围的随机数
- c++如何生成随机数
- C语言如何生成规定范围内的随机数
- 如何利用CPU生成随机数
- 如何生成在一定范围内的double型的真正随机数?
- 如何快速生成随机数