JAVA中⽣成指定位数随机数的⽅法总结
JAVA中⽣成指定位数随机数的⽅法很多,下⾯列举⼏种⽐较常⽤的⽅法。
⽅法⼀、通过Math类
1public static String getRandom1(int len) {
2int rs = (int) ((Math.random() * 9 + 1) * Math.pow(10, len - 1));
3return String.valueOf(rs);
4 }
该⽅法是通过Math.random()获取[0.0, 1.0)的随机数,再乘以需要的位数。这⾥⽤乘9,再加1,⽽没有⽤乘10的⽅式,是为了防⽌⽣成的随机数⽐较⼩,导致乘以位数后⼩于指定位数。
⽅法⼆、通过Random类
1public static String getRandom2(int len) {
2 Random r = new Random();
3 StringBuilder rs = new StringBuilder();
4for (int i = 0; i < len; i++) {
5 rs.Int(10));
6 }
String();
8 }
该⽅法是通过Random类的nextInt(9)⽅法可以直接获取⼀个[0,9]的随机整数,然后通过指定次数的循环,来拼接随机数。Random类其实还有⼀些的⽣成随机数的⽅法,有兴趣可以了解⼀下。
⽅法三、通过Random类
1public static String getRandom3(int len) {
2int digit = (int) Math.pow(10, len - 1);
3int rs = new Random().nextInt(digit * 10);
4if (rs < digit) {
5 rs += digit;
6 }
7return String.valueOf(rs);
nextint()方法8 }
该⽅法也是通过Random类,不同的是,通过指定随机数的最⼤值,来⽣成指定位数的随机整数,因为有可能位数不⾜,所以当⼩于指定位数的时候需要加上指定位数的值。举例:要⽣成⼀个4位数的随机值,那么就是⽣成⼀个⼩于10000的随机整数,当随机数⼩于1000时,加上1000,来确保位数。
⽅法四、通过指定数据源
1public static String getRandom4(int len) {
2 String source = "0123456789";
3 Random r = new Random();
4 StringBuilder rs = new StringBuilder();
5for (int j = 0; j < len; j++) {
6 rs.append(source.Int(10)));
7 }
String();
9 }
该⽅法是预设⼀个数据源,然后通过Random类的nextInt⽅法获取到⼀个随机整数,将这个整数作为数据源数组的下标,再通过循环的⽅法来组成⼀个随机数。这⾥还可以在数据源中补充上字母,就相当于⽣成带字母的验证码。
PS:获取不重复的随机值
1public static List<String> getDistinctRandom(int len, int num) {
2 Set<String> s = new HashSet<>();
3while (s.size() < num) {
4 s.add(getRandom4(len));
5 }
6return new ArrayList<>(s);
7 }
前⾯⼏种⽅法获取指定个数的随机数,其中是有可能有重复值的。如果想要获取不重复的随机值,也很简单,获取随机值的⽅式可以不变,只要把获取到的随机值都放进Set集合,直到达到需要的个数就ok了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论