700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 随机生成8位长字符串(大小写字母及数字组合)

随机生成8位长字符串(大小写字母及数字组合)

时间:2021-01-27 22:45:32

相关推荐

随机生成8位长字符串(大小写字母及数字组合)

1、简要说明

项目上开发要用到随机生成一个8位长的字符串(类似Java工具类中的UUID),作为id来对同一事物的不同个体进行唯一标识,如同一个班级里学生名字几乎不同,偶尔会有重复(小王、小红、小明…)。初中的小明非常忙,书中和试卷中总有Ta。现在好了,课程多了,作业多了,小明更忙了,哈哈~

既然是随机的,自然可以应用到C语言库中的rand()随机函数,通过数字的巧妙处理实现字符串的随机,代码如下。

2、示例代码

#include <string>#include <time.h>#include <stdlib.h>#include <Windows.h>#include <iostream>using namespace std;#define STRINGLEN 8void GetRandomString(int nStrLen, string &strData){for(int i=0; i<nStrLen; i++){switch((rand()%3)){case 0:strData += ('0'+rand()%10);break;case 1:strData += ('a'+rand()%26);break;case 2:strData += ('A'+rand()%26);break;default:break;}}}int main(){srand((unsigned int)time(NULL));//设置随机数种子,NULL:从1970-01-01 00:00:00到现在的秒数string strData = "";for(int i=1; i<=20; i++){strData = "";GetRandomString(STRINGLEN, strData);cout << strData << " ";if(0 == (i%4)){cout << endl;}}getchar();return 0;}

3、运行结果

结果显示字符串随机生成成功,需要的注意的是,如果将srand()函数放在GetRandomString()函数中,则运行结果全部是一样的,如下所示。

void GetRandomString(int nStrLen, string &strData){srand((unsigned int)time(NULL));//设置随机数种子,NULL:从1970-01-01 00:00:00到现在的秒数for(int i=0; i<nStrLen; i++){//***}}int main(){string strData = "";for(int i=1; i<=20; i++){//***}getchar();return 0;}

这是由于程序运行太快(不超过一秒),srand()函数的种子值是秒,在一秒内种子没变化,因此rand()生成的随机数序列未变化,每次调用GetRandomString()的结果都是一样的,可以在for()循环体最后一行加上Sleep(1000)就好了。

for(int i=1; i<=20; i++){//***Sleep(1000);}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。