首页 > 代码库 > 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的随机的字符串的封装(基本上够用了)