python 随机生成不重复的6位数_随机生成6位数、随机生成不重复的6位数

随机生成一个几位数,这种比较常见的操作今天我们来看一下,例如随机生成6位数,直接来简单明了的吧:

int num = (int) ((Math.random() * 9 + 1) * 100000);

最终num就是需要的6位随机数。

同理要是想得到随机的五位数和七位数呢?

//随机的五位数

int num = (int) ((Math.random() * 9 + 1) * 10000);

//随机的七位数

int num = (int) ((Math.random() * 9 + 1) * 1000000);

以此类推想得到随机的n位数都可以,只需要改动后面的100000就好。

Java

如果想生成随机的六位数,并且每位数都不重复:

//随机生成六位数,并且每位数都不重复

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.52015784514,也有可能是0.00597308946201);

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) * 100000)表示:乘以100000后,这个随机小数的小数点就会往后移六位,得到1*****.*****到9*****.******之间的数字(现在小数点前是六位数);

最后(int) ((Math.random() * 9 + 1) * 100000)表示:经过int类型转换之后,得到了首位数一定不是0的随机六位数;

还可以通过以下代码运行之后打印结果看一下:

//生成一千个随机六位数

for (int i = 0; i < 5000; i++) {

int num = (int) ((Math.random() * 9 + 1) * 100000);

System.out.println("随机生成的六位数:" + num);

String num_str = String.valueOf(num);

//验证是否会生成五位数,或者首位是0的数

if (num_str.length() == 5) {

System.out.println("生成的五位数:" + num);

}

}

以上代码是生成了5000个随机的六位数,以下是结果:

输出打印结果.png

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值