【Java】利用Collections类下的shuffle洗牌方法改进在一定的范围内产生不重复的随机数

上次在《【Java】在一定的范围内产生不同的随机数》(点击打开链接)上所提到的方法,尽管已经解决了一定范围内产生不同随机数的问题,运行速度已经可以的,至少不会弄很久都弄不好,其实利用Collections类下的shuffle方法思想可以更清晰、速度更快地在一定的范围内产生不同的随机数。

Collections类下的shuffle方法是可以随机打乱一个数组中的元素的程序,也叫做洗牌方法。

有这个方法,配合我在《【Java】Java中的Collections类——Java中升级版的数据结构》(点击打开链接)中介绍的动态数组ArrayList,此题就已经终结了:

import java.util.*;
public class shuffleTest {
	public static void main(String[] args) {
		//创建一个动态数组
		ArrayList<Integer> randomArr=new ArrayList<Integer>();
		//在里面塞进1-20,你喜欢完全可以改改这个for循环,在里面塞什么都可以
		for(int i=1;i<=20;i++){
			randomArr.add(i);
		}
		//对这个动态数组进行洗牌
		Collections.shuffle(randomArr);
		//打印这个动态数组
		System.out.println(randomArr);
		}	
}

这样就实现了在1-20的范围内生产不重复的随机数,运行结果如下:


笔者再于此基础上让程序在1-N范围内产生300组随机数,不重复,以测试此程序的性能,见如下的代码:

import java.util.*;
public class shuffleTest {
	public static void main(String[] args) {
		ArrayList<Integer> randomArr=new ArrayList<Integer>();
		for(int n=1;n<=300;n++){
		System.out.printf("在1-%d的范围内产生随机数,不重复",n);
		for(int i=1;i<=n;i++){
			randomArr.add(i);
		}
		Collections.shuffle(randomArr);
		System.out.println(randomArr);
		randomArr=new ArrayList<Integer>();
		}
	}
}

程序运行结果如下,运行的时候明显速度比上一次《【Java】在一定的范围内产生不同的随机数》( 点击打开链接)上所提到的方法快多了。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值