java 生成6位不重复数字_java生成6位不重复随机数,求救各位道友

9c1c85231435fe04b01ca127fe294e14.png

UYOU

一个笨办法就是直接初始化数组,每个数字对号入座,然后随机挑选,第一次的结果与倒数第一位交换,第二次的结果与倒数第二位交换,当然交换后,下次挑随机数的范围也会相应减一。

至于效率如何,楼主可以执行下。

public static void main(String[] args) {

// 初始化数组

int[] arr = new int[1000000];

for (int i = 0; i < arr.length; i++) {

arr[i] = i;

}

int randomCount = 1000; // 要生成多少个随机数

Random random = new Random(); // 随机数生成器

long startTime = System.currentTimeMillis(); // 计时

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

// 随机挑选

int pickIndex = random.nextInt(arr.length - i);

// 交换

int t = arr[pickIndex];

arr[pickIndex] = arr[arr.length - 1 - i];

arr[arr.length - 1 - i] = t;

}

System.out.println("take time: " + (System.currentTimeMillis() - startTime) + " ms");

// 输出结果(超过一万就不输出了,直接看耗时)

if (randomCount < 10000) {

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

System.out.printf("%06d ", arr[arr.length - i - 1]);

if (i % 40 == 39) {

System.out.println();

}

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值