思路:如果区分大小写的话,那么大写算是一类,小写算是一类,数字算是一类,
那么通过 Random rand=new Random();这行代码随机生成代表每一类的的生成器。
如果随机产生的值为0,则产生的是数字,如果随机产生的是1,则代表要产生大写字母,
如果随机产生的值为2,则代表要产生小写字母种类。
这样,每一位产生的种类都是随机的,每一类中具体产生的内容则用另一个
随机生成器来随机生成。循环要生成的长度,即可产生大小写和数字组合的随机数了。
注:这里的字母产生需要先产生ascii码对应的整数型,然后将ascii码对应的整数值
进行转换成对应的字符类型即可。
代码如下:
//根据指定长度生成字母和数字的随机数
//0~9的ASCII为48~57
//A~Z的ASCII为65~90
//a~z的ASCII为97~122
public String createRandomCharData(int length)
{
StringBuilder sb=new StringBuilder();
Random rand=new Random();//随机用以下三个随机生成器
Random randdata=new Random();
int data=0;
for(int i=0;i<length;i++)
{
int index=rand.nextInt(3);
//目的是随机选择生成数字,大小写字母
switch(index)
{
case 0:
data=randdata.nextInt(10);//仅仅会生成0~9
sb.append(data);
break;
case 1:
data=randdata.nextInt(26)+65;//保证只会产生65~90之间的整数
sb.append((char)data);
break;
case 2:
data=randdata.nextInt(26)+97;//保证只会产生97~122之间的整数
sb.append((char)data);
break;
}
}
String result=sb.toString();
logger.info("生成的随机数兑换码为{}",result);
return result;
}