介绍
如何在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项目中实现一个随机数生产算法