java登录字符串封装_JAVA的随机的字符串的封装(基本上够用了)
1 importjava.util.Random;2
3 public classUranDom {4 /**
5 * 以下均为random函数6 * **/
7 private staticRandom random;8 private static longseed;9 static{10 seed=System.currentTimeMillis();11 random=newRandom(seed);12 }13
14 privateUranDom(){}15
16 /**
17 * 获取种子值18 *@returnlong 随机种子生成器种子值19 *20 **/
21 public static longgetSeed(){22 returnseed;23 }24
25 /**
26 * 随机返回0到1之间的实数[0,1)27 *@returndouble 随机数28 *29 * **/
30 public static doubleuniform(){31 returnrandom.nextDouble();32 }33
34 /**
35 * 随机0到N-1的整数[0,N)36 *@paramN 上限37 * @retrun int 随机数38 * **/
39 public static int uniform(intN){40 returnrandom.nextInt(N);41 }42 /**
43 * 随机返回a到b-1之间的整数44 *@parama 下限45 *@paramb 上限46 *@returnint 随机数47 *48 * **/
49 public static int uniform(int a,intb){50 return a+uniform(b-1);51 }52
53 /**
54 * 随机返回a到b之间的实数55 *@parama 下限56 *@paramb 上限57 *@returnint 随机数58 *59 * **/
60
61 public static double uniform(double a,doubleb){62 return a+uniform()*(b-a);63 }64
65 /***66 *@paramtype ==1 数字67 *@paramtype ==2 纯小写字母68 *@paramtype ==3 纯大写字母69 *@paramtype ==4 数字和小写字母混排70 *@paramtype ==5 数字和大写字母混排71 *@paramtype ==6大写和小写字母混排72 *@paramtype ==7 大小写和数字混排73 *@paramlength 长度74 *@paramboth 只有length>2且type>4时生效,意思是,两者或以上都必须有一个以上的类型75 * **/
76 public static String RandString(int type,int length,booleanboth){77 StringBuffer buffer=newStringBuffer();78 StringBuffer sb=null;79 String number="0123456789";80 String sletter="abcdefghijklmnopqrstuvwxyz";81 String bletter="ABCDEFGHIJKLMNOPQRSTUVWXYZ";82
83 //处理type
84 switch(type){85 case 1://纯数字
86 buffer.append(number);87 sb=newStringBuffer();88 while(length>0){89 sb.append(buffer.charAt(UranDom.uniform(10)));90 length--;91 }92 break;93 case 2://纯小写
94 buffer.append(sletter);95 sb=newStringBuffer();96 while(length>0){97 sb.append(buffer.charAt(UranDom.uniform(26)));98 length--;99 }100 break;101 case 3://纯大写
102 buffer.append(bletter);103 sb=newStringBuffer();104 while(length>0){105 sb.append(buffer.charAt(UranDom.uniform(26)));106 length--;107 }108 break;109 case 4://数字+小写
110 buffer.append(number+sletter);111 if(!both){112 sb=newStringBuffer();113 while(length>0){114 sb.append(buffer.charAt(UranDom.uniform(36)));115 length--;116 }117 }else {//两者必有其一
118 sb=newStringBuffer();119 int ra1=UranDom.uniform(length);120 int ra2=UranDom.uniform(length);121 //如果重复则重新随机
122 while(ra2==ra1){123 ra2=UranDom.uniform(length);124 }125 //随机第一个和第二个的数值
126 char c1=(char)('0'+UranDom.uniform(10));127 char c2=(char)('a'+UranDom.uniform(26));128
129 while(length>0){130 if(length==ra1){131 sb.append(c1);132 }133 else if(length==ra2)134 {135 sb.append(c2);136 }137 else sb.append(buffer.charAt(UranDom.uniform(36)));138 length--;139 }140 }141 break;142 case 5://数字+大写
143 buffer.append(number+bletter);144 if(!both){145 sb=newStringBuffer();146 while(length>0){147 sb.append(buffer.charAt(UranDom.uniform(36)));148 length--;149 }150 }else {//两者必有其一
151 sb=newStringBuffer();152 int ra1=UranDom.uniform(length);153 int ra2=UranDom.uniform(length);154 //如果重复则重新随机
155 while(ra2==ra1){156 ra2=UranDom.uniform(length);157 }158 //随机第一个和第二个的数值
159 char c1=(char)('0'+UranDom.uniform(10));160 char c2=(char)('A'+UranDom.uniform(26));161
162 while(length>0){163 if(length==ra1){164 sb.append(c1);165 }166 else if(length==ra2)167 {168 sb.append(c2);169 }170 else sb.append(buffer.charAt(UranDom.uniform(36)));171 length--;172 }173
174 }175 break;176 case 6://大写+小写
177 buffer.append(sletter+bletter);178 if(!both){179 sb=newStringBuffer();180 while(length>0){181 sb.append(buffer.charAt(UranDom.uniform(52)));182 length--;183 }184 }else {//两者必有其一
185 sb=newStringBuffer();186 int ra1=UranDom.uniform(length);187 int ra2=UranDom.uniform(length);188 //如果重复则重新随机
189 while(ra2==ra1){190 ra2=UranDom.uniform(length);191 }192 //随机第一个和第二个的数值
193 char c1=(char)('a'+UranDom.uniform(26));194 char c2=(char)('A'+UranDom.uniform(26));195
196 while(length>0){197 if(length==ra1){198 sb.append(c1);199 }200 else if(length==ra2)201 {202 sb.append(c2);203 }204 else sb.append(buffer.charAt(UranDom.uniform(52)));205 length--;206 }207 }208 break;209 case 7:210 buffer.append(number+sletter+bletter);211 if(!both){212 sb=newStringBuffer();213 while(length>0){214 sb.append(buffer.charAt(UranDom.uniform(62)));215 length--;216 }217 }else {//三者必有其一
218 sb=newStringBuffer();219 int ra1=UranDom.uniform(length);220 int ra2=UranDom.uniform(length);221 int ra3=UranDom.uniform(length);222 //如果重复则重新随机
223 while(ra2==ra1){224 ra2=UranDom.uniform(length);225 }226 while(ra3==ra2||ra3==ra1){227 ra3=UranDom.uniform(length);228 }229 //随机第一个和第二个的数值
230 char c1=(char)('0'+UranDom.uniform(10));231 char c2=(char)('A'+UranDom.uniform(26));232 char c3=(char)('a'+UranDom.uniform(26));233 System.out.println(c1+c2+c3);234 while(length>0){235 if(length==ra1){236 sb.append(c1);237 }238 else if(length==ra2)239 {240 sb.append(c2);241 }242 else if(length==ra3){243 sb.append(c3);244 }245 else sb.append(buffer.charAt(UranDom.uniform(62)));246 length--;247 }248 break;249 }250
251 }