String[] chs = {"1","2","3",...,"a","b",...,"z"};
然后随机产生12个范围在1到35之间的整数,拼成编号

解决方案 »

  1.   

    1-9 和 A-Z 一共是 35 个字符,那么就可以用 35 进制来搞定这个问题,生成一个足够大的数,转换成35进制即可。
    不过35进制实际是上 0-9 和 A-Y,缺少 Z,多了 0,所要要用 Z 去替换掉 0,如下:/*
     * @(#) Test.java
     * Created on 2004-10-8
     * By James Fancy
     */package jamesfancy;/**
     * Test
     * 
     * @author James
     */
    public class Test {    public static String createNumber() {
            long max = Long.parseLong("1000000000000", 35); // 35进制数的最大12位数+1,用于取随机数。(随机数大于等于0,小于这个数)
            long x = (long) (Math.random() * max);
            String number = Long.toString(x, 35).toUpperCase();
            StringBuffer buffer = new StringBuffer(12);
            number.replaceAll("0", "Z"); // 将 0 替换成 Z
            if (number.length() < 12) { // 不足12位的前面补0,替换成Z,所以直接补Z
                for (int i = 12; i > number.length(); --i) {
                    buffer.append('Z');
                }
                buffer.append(number);
                number = buffer.toString();
            }
            return number;
        }
        
        public static void main(String[] args) {
            for (int i = 0; i < 10; ++i) {
                System.out.println(createNumber());
            }
        }
    }
      

  2.   

    jboss3.2.3配备有一个uuid-key-generator.sar,应该可以满足你的需求。
      

  3.   

    来吧,给你一段
      /**
       * 产生指定长度随机字符串(包括字母及数字).
       * @param length int
       * 随机字符串长度
       * @return String
       * 随机字符串
       */
      public static String random(int length)
      {
        String retu = "";
        int d1,d2;
        char[] letters = initLetters();
        int[] numbers = initNumbers();    for(int i = 0;i < length;i++){
          d1 = ((int)(Math.random() * 10) % 2);
          if(d1 == 0){ // use a letter
            d2 = ((int)(Math.random() * 100) % 52);
            retu += letters[d2];
          }
          else if(d1 == 1){ // use a number
            retu += (int)(Math.random() * 10);
          }
        }
        return retu;
      }  /**
       * 产生纯字母的随机字符串
       * @param length int
       * 随机字符串长度
       * @return String
       * 随机字符串
       */
      public static String randomString(int length)
      {
        String retu = "";
        int d2;
        char[] letters = initLetters();    for(int i = 0;i < length;i++){
          d2 = ((int)(Math.random() * 100) % 52);
          retu += letters[d2];
        }
        return retu;
      }  /**
       * 产生纯数字随机字符串
       * @param length int
       * 随机字符串长度
       * @return String
       * 随机字符串
       */
      public static String randomNumber(int length)
      {
        String retu = "";
        int[] numbers = initNumbers();    for(int i = 0;i < length;i++){
          retu += (int)(Math.random() * 10);
        }
        return retu;
      }  /**
       * 内部方法,产生字母数组
       * @return char[]
       */
      private static char[] initLetters()
      {
        char[] ca = new char[52];
        for(int i = 0;i < 26;i++){
          ca[i] = (char)(65 + i);
        }
        for(int i = 26;i < 52;i++){
          ca[i] = (char)(71 + i);
        }
        return ca;
      }  /**
       * 内部方法,产生数字数组
       * @return int[]
       */
      private static int[] initNumbers()
      {
        int[] na = new int[10];
        for(int i = 0;i < 10;i++){
          na[i] = i;
        }
        return na;
      }
      

  4.   

    不要罗嗦啦,我告诉你,时间(精确到秒)+日期+几位随机数
    COM的设计中就是用这种方法作标记的。
      

  5.   

    String[] chs = {"1","2","3",...,"a","b",...,"z"};
    int index=int(Math.random()*12+1)
    然后就把用个数组newchs[]存起来
    然后String(newchs);
      

  6.   

    String[] chs = {"1","2","3",...,"a","b",...,"z"};
    String result=null;
    for (int i=0;i<13;i++){
      int index=int(Math.random()*37+1);
      result=result+chs[index];
    }
      

  7.   

    更正一下:
    String[] chs = {"0","1","2","3",...,"a","b",...,"z"};//36个字符
    String result=null;
    for (int i=0;i<13;i++){
      int index=int(Math.random()*37);
      result=result+chs[index];
    }
      

  8.   

    再次更正一下
    String[] chs = {"0","1","2","3",...,"a","b",...,"z"};//36个字符
    String result="";
    for (int i=0;i<12;i++){
      int index=int(Math.random()*37);
      result=result+chs[index];
    }