首页 > 代码库 > JAVA的随机的字符串的封装(基本上够用了)
JAVA的随机的字符串的封装(基本上够用了)
我是能说我是一个码农,是个菜逼,是个代码的搬运工,现在站在各个巨人的肩膀上看着java的世界:
1 import java.util.Random; 2 3 public class UranDom { 4 /** 5 * 以下均为random函数 6 * **/ 7 private static Random random; 8 private static long seed; 9 static { 10 seed=System.currentTimeMillis(); 11 random=new Random(seed); 12 } 13 14 private UranDom(){} 15 16 /** 17 * 获取种子值 18 * @return long 随机种子生成器种子值 19 * 20 * */ 21 public static long getSeed(){ 22 return seed; 23 } 24 25 /** 26 * 随机返回0到1之间的实数[0,1) 27 * @return double 随机数 28 * 29 * **/ 30 public static double uniform(){ 31 return random.nextDouble(); 32 } 33 34 /** 35 * 随机0到N-1的整数[0,N) 36 * @param N 上限 37 * @retrun int 随机数 38 * **/ 39 public static int uniform(int N){ 40 return random.nextInt(N); 41 } 42 /** 43 * 随机返回a到b-1之间的整数 44 * @param a 下限 45 * @param b 上限 46 * @return int 随机数 47 * 48 * **/ 49 public static int uniform(int a,int b){ 50 return a+uniform(b-1); 51 } 52 53 /** 54 * 随机返回a到b之间的实数 55 * @param a 下限 56 * @param b 上限 57 * @return int 随机数 58 * 59 * **/ 60 61 public static double uniform(double a,double b){ 62 return a+uniform()*(b-a); 63 } 64 65 /** * 66 * @param type ==1 数字 67 * @param type ==2 纯小写字母 68 * @param type ==3 纯大写字母 69 * @param type ==4 数字和小写字母混排 70 * @param type ==5 数字和大写字母混排 71 * @param type ==6大写和小写字母混排 72 * @param type ==7 大小写和数字混排 73 * @param length 长度 74 * @param both 只有length>2且type>4时生效,意思是,两者或以上都必须有一个以上的类型 75 * **/ 76 public static String RandString(int type,int length,boolean both){ 77 StringBuffer buffer=new StringBuffer(); 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=new StringBuffer(); 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=new StringBuffer(); 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=new StringBuffer();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=new StringBuffer();113 while(length>0){114 sb.append(buffer.charAt(UranDom.uniform(36)));115 length--;116 }117 }else {//两者必有其一118 sb=new StringBuffer();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=new StringBuffer();146 while(length>0){147 sb.append(buffer.charAt(UranDom.uniform(36)));148 length--;149 }150 }else {//两者必有其一151 sb=new StringBuffer();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=new StringBuffer();180 while(length>0){181 sb.append(buffer.charAt(UranDom.uniform(52)));182 length--;183 }184 }else {//两者必有其一185 sb=new StringBuffer();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=new StringBuffer();213 while(length>0){214 sb.append(buffer.charAt(UranDom.uniform(62)));215 length--;216 }217 }else {//三者必有其一218 sb=new StringBuffer();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 }
JAVA的随机的字符串的封装(基本上够用了)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。