如何在java项目中实现一个随机数生产算法

  介绍

如何在java项目中实现一个随机数生产算法?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

java提供了math . Random()函数,返回一个双类型的随机数,也有util包里的随机类,可以生成双,int,浮动,长,字节等随机数。

但有些业务需求,往往需要对这些方法做一下封装比。如用固定因子生成32位的3 des算法关键值。

包测试;
  
  进口java.util.Random;
  
  公开课RandomUtil {
  
  公共静态最终字符串ALLCHAR=?123456789 abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz";
  公共静态最终字符串LETTERCHAR=癮bcdefghijkllmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
  公共静态最终字符串NUMBERCHAR=?123456789”;/* *
  *返回一个定长的带因子的固定的随机字符串(只包含大小写字母,数字)
  *
  * @param长度
  *随机字符串长度
  * @return随机字符串
  */公共静态字符串generateStringByKey (int, int通道){
  StringBuffer某人=new StringBuffer ();
  随机随机=new随机(渠道);
  for (int i=0;我& lt;长度;我+ +){
  sb.append (ALLCHAR.charAt (random.nextInt (ALLCHAR.length ())));
  }
  返回sb.toString ();
  }/* *
  *返回一个定长的随机字符串(只包含大小写字母,数字)
  *
  * @param长度
  *随机字符串长度
  * @return随机字符串
  */公共静态字符串generateString (int长度){
  StringBuffer某人=new StringBuffer ();
  随机随机=new随机();
  for (int i=0;我& lt;长度;我+ +){
  sb.append (ALLCHAR.charAt (random.nextInt (ALLCHAR.length ())));
  }
  返回sb.toString ();
  }/* *
  *返回一个定长的随机纯字母字符串(只包含大小写字母)
  *
  * @param长度
  *随机字符串长度
  * @return随机字符串
  */公共静态字符串generateMixString (int长度){
  StringBuffer某人=new StringBuffer ();
  随机随机=new随机();
  for (int i=0;我& lt;长度;我+ +){
  sb.append (ALLCHAR.charAt (random.nextInt (LETTERCHAR.length ())));
  }
  返回sb.toString ();
  }/* *
  *返回一个定长的随机纯大写字母字符串(只包含大小写字母)
  *
  * @param长度
  *随机字符串长度
  * @return随机字符串
  */公共静态字符串generateLowerString (int长度){
  返回generateMixString(长度).toLowerCase ();
  }/* *
  *返回一个定长的随机纯小写字母字符串(只包含大小写字母)
  *
  * @param长度
  *随机字符串长度
  * @return随机字符串
  */公共静态字符串generateUpperString (int长度){
  返回generateMixString(长度).toUpperCase ();
  }/* *
  *生成一个定长的纯0字符串
  *
  * @param长度
  *字符串长度
  * @return纯0字符串
  */公共静态字符串generateZeroString (int长度){
  StringBuffer某人=new StringBuffer ();
  for (int i=0;我& lt;长度;我+ +){
  sb.append (& # 39; 0 & # 39;);
  }
  返回sb.toString ();
  }/* *
  *根据数字生成一个定长的字符串,长度不够前面补0
  *
  * @param num
  *数字
  * @param fixdlenth
  *字符串长度
  * @return定长的字符串
  */公共静态字符串toFixdLengthString (num, int fixdlenth) {
  StringBuffer某人=new StringBuffer ();
  字符串strNum=String.valueOf (num);
  如果(fixdlenth - strNum.length()在=0){
  sb.append (generateZeroString (fixdlenth strNum.length ()));
  其他}{
  把新的RuntimeException(“将数字“;+ num +“转化为长度为“+ fixdlenth +“的字符串发生异常!“);
  }
  sb.append (strNum);
  返回sb.toString ();
  }/* *
  *每次生成的len位数都不相同
  *
  * @param参数
  * @return定长的数字
  */公共静态int getNotSimple (int[]参数,int len) {
  随机兰德=new随机();
  for (int i=param.length;我在;1;我(){
  int指数=rand.nextInt(我);
  int tmp=参数(指标);
  参数(指数)=参数(i - 1);
  参数(i - 1)=tmp;
  }
  int结果=0;
  for (int i=0;我& lt;兰;我+ +){
  结果=结果* 10 +参数[我];
  }
  返回结果;
  }
  
  公共静态void main (String [] args) {
  int频道=555555;//测试因子比生产因子少1
  System.out.println(“返回一个定长的带因子的固定的随机字符串(只包含大小写字母,数字):“+ generateStringByKey(32通道));
  System.out.println(“返回一个定长的随机字符串(只包含大小写字母,数字):“+ generateString (32));
  System.out.println(“返回一个定长的随机纯字母字符串(只包含大小写字母):“+ generateMixString (10));
  System.out.println(“返回一个定长的随机纯大写字母字符串(只包含大小写字母):“+ generateLowerString (10));
  System.out.println(“返回一个定长的随机纯小写字母字符串(只包含大小写字母):“+ generateUpperString (10));
  System.out.println(“生成一个定长的纯0字符串:“+ generateZeroString (10));
  System.out.println(“根据数字生成一个定长的字符串,长度不够前面补0:“10)+ toFixdLengthString (123);
  int []={1, 2, 3, 4, 5, 6, 7};
  System.out.println(“每次生成的len位数都不相同:“+ getNotSimple (3));
  }
  }

如何在java项目中实现一个随机数生产算法