随机生成一个几位数,这种比较常见的操作今天我们来看一下,例如随机生成6位数,直接来简单明了的吧:
int num = (int) ((Math.random() * 9 + 1) * );
讯享网
最终num就是需要的6位随机数。
同理要是想得到随机的五位数和七位数呢?
讯享网//随机的五位数 int num = (int) ((Math.random() * 9 + 1) * 10000); //随机的七位数 int num = (int) ((Math.random() * 9 + 1) * );
以此类推想得到随机的n位数都可以,只需要改动后面的就好。
如果想生成随机的六位数,并且每位数都不重复:
//随机生成六位数,并且每位数都不重复 public static int Num() { int[] array = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; Random rand = new Random(); for (int i = 10; i > 1; i--) { int index = rand.nextInt(i); int tmp = array[index]; array[index] = array[i - 1]; array[i - 1] = tmp; } int result = 0; for (int i = 0; i < 6; i++) { result = result * 10 + array[i]; } if (String.valueOf(result).length() == 6) { return result; } else { return Num(); } }
以上就是随机生成的六位数,并且可以达到每位数都不重复。
····························································分割性·····························································
针对有技术朋友说可能会生成首位是0的数字,这样生成的随机数就变成了五位数,在此我做一下论证:

首先Math.random()的意思是得到一个范围在0-1之间的double类型的随机小数(例如:0.,也有可能是0.001);
Math.random()的取值是0-1之间的随机小数(事实上取不到0和1);
Math.random() * 9表示乘以9以后是0-9之间的随机小数,也就是0.到8.之间的小数(大于0而小于9);
(Math.random() * 9 + 1)表示:"+1"之后就会得到1-9之间的随机小数,也就是1.到9.*之间的小数;
((Math.random() * 9 + 1) * )表示:乘以后,这个随机小数的小数点就会往后移六位,得到1*.*到9*.之间的数字(现在小数点前是六位数);
最后(int) ((Math.random() * 9 + 1) * )表示:经过int类型转换之后,得到了首位数一定不是0的随机六位数;
还可以通过以下代码运行之后打印结果看一下:
讯享网 //生成一千个随机六位数 for (int i = 0; i < 5000; i++) { int num = (int) ((Math.random() * 9 + 1) * ); System.out.println("随机生成的六位数:" + num); String num_str = String.valueOf(num); //验证是否会生成五位数,或者首位是0的数 if (num_str.length() == 5) { System.out.println("生成的五位数:" + num); } }
以上代码是生成了5000个随机的六位数,以下是结果:


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/46394.html