/**
* 生成指定位数大小写+数字的随机字符串
*/
public static String createRandomCode(int num) {
StringBuilder builder = new StringBuilder();
for (int i = 0; i < num; i++) {
int factor = (int) (Math.random()*3);
if (factor==0){
builder.append((int)(Math.random()*10));
}else if (factor==1){
int index = (int) (Math.random()*26+65);
builder.append((char)index);
}else {
int index = (int) (Math.random()*26+97);
builder.append((char)index);
}
}
return builder.toString();
}
有唯一要求的话可以数据库加唯一索引,不过重复概率也是比较低的,一共有(10+26+26)的num次幂种组合,在需要生成的个数远小于可能的组合数情况下,几乎不会重复。当生成位数为6时,就有500多亿种可能了。