【Android】【小工具】使用Random生成一个指定长度的随机整数列

本文介绍了在Android开发中如何使用Random类高效地生成一个指定长度的随机整数列表。通过避免重复抽取,提高在大数据集下的性能。主要利用for循环和移除已抽取元素的方法,确保生成不含重复的随机数列。

Random.nexInt 的方法想必也是十分常见的。
做项目的时候涉及到了一个需求随机在一堆数据中抽取固定几个进行展示。最初用的是百度来的查询一个,成功则保存,若重复则替代,挨个比对。后来嫌比对比有可能在大数据时较耗时。干脆自己写了个小工具。

//获取一个用list展现的随机数的方法

    /**
     *
     * @param datas
     * 目标数列
     * @param num
     * 所需要的数列大小
     * @return
     */
    public static ArrayList<Integer> getRandomList(ArrayList<Integer> datas , int num)
    {
        Random random = new Random();
        ArrayList<Integer> resultDatas = new ArrayList<Integer>();
        for(int i = 0 ; i < num ; i++)
        {
            int data = Math.abs(random.nextInt()%datas.size());
            resultDatas.add(datas.get(data));
            datas.remove(datas.get(data));
        }
        return resultDatas;
    }

基本没什么好说明的地方。
功能是输入一个指定的整数数列,从中随机抽取num个,输出。
使用for循环,随机抽取之后再从指定数列中移除,再次随机抽取,以此不断抽取num个随机数。

主函数代码:

ArrayList<Integer> arrayList = RandomUtil.getRandomList(10,8);
        Log.i("msg" , arrayList.toString());

输出效果:

12-08 12:55:07.400    1224-1224/com.example.think.lancher I/msg﹕ [5, 7, 4, 9, 2, 1, 0, 3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值