auth code为唯一的16位数字串

auth code(验证码)为唯一的16位数字串,声明成什么类型比较好呢?如何让它随机的显示?

例子代码

Java提供的随机数工具,或者第三方提供的随机数工具,都不能满足我的需求:产生指定位数且大于0的整数(可以做为ID使用)。

    在使用commons-lang的RandomStringUtils类时,有一个方法引起了我的注意RandomStringUtils.randomNumeric(int count),该方法返回指定数目的随机数字串,如果把返回的数字串解析成数字,不就可以产生随机数了么~~~~

Java代码
package org.lazyman.util

import org.apache.commons.lang.RandomStringUtils;

import org.apache.commons.lang.math.RandomUtils;

/**

  • @author yihuan
  • @version RandomNumberUtil.java 2010-1-14 上午11:39:20

    */

    public class RandomNumberUtil {

    private static final int[] prefix = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

    /**

    • 随机产生最大为18位的long型数据(long型数据的最大值是9223372036854775807,共有19位)

    • @param digit
    • 用户指定随机数据的位数
      */
      public static long randomLong(int digit) {
      if (digit >= 19 || digit <= 0)
      throw new IllegalArgumentException("digit should between 1 and 18(1<=digit<=18)");
      String s = RandomStringUtils.randomNumeric(digit - 1);
      return Long.parseLong(getPrefix() + s);
      }

    /**

    • 随机产生在指定位数之间的long型数据,位数包括两边的值,minDigit<=maxDigit

    • @param minDigit
    • 用户指定随机数据的最小位数 minDigit>=1
    • @param maxDigit
    • 用户指定随机数据的最大位数 maxDigit<=18
      */
      public static long randomLong(int minDigit, int maxDigit) {
      if (minDigit > maxDigit) {
      throw new IllegalArgumentException("minDigit > maxDigit");
      }
      if (minDigit <= 0 || maxDigit >= 19) {
      throw new IllegalArgumentException("minDigit <=0 || maxDigit>=19");
      }
      return randomLong(minDigit + getDigit(maxDigit - minDigit));
      }

    private static int getDigit(int max) {

    return RandomUtils.nextInt(max + 1);

    }

    /**

    • 保证第一位不是零

    • @return
      */
      private static String getPrefix() {
      return prefix[RandomUtils.nextInt(9)] + "";
      }
      }

[quote]如何让它随机的显示?[/quote]

什么叫随机显示?

[quote]16位数字串[/quote]

是指16bit,还是指16个0-9的数字

随机产生数字字符串