a263482604 2010-03-25 21:18 采纳率: 0%
浏览 201
已采纳

auth code为唯一的16位数字串

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

  • 写回答

4条回答 默认 最新

  • wanghaolovezlq 2010-03-26 17:26
    关注

    例子代码

    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)] + "";
        }
        }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表
  • ¥15 DbVisualizer Pro 12.0.7 sql commander光标错位 显示位置与实际不符