我是靠谱客的博主 拼搏钢笔,最近开发中收集的这篇文章主要介绍使用随机算法产生一个数,要求把1-1000W之间这些数全部生成。,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

使用随机算法产生一个数,要求把1-1000W之间这些数全部生成。(考察高效率,解决产生冲突的问题)

代码虽然实现了。
提高效率的地方有如下:
1.初始化set集合的时候 Sets.newHashSetWithExpectedSize(value),
给初始化带个固定大小,减少了集合在扩容的时候,值重新复制的问题。这的效率稍有提高。
2.Random random = new Random();放在循环之外。


具体代码如下:

    /**
     * 使用随机算法产生一个数,要求把1-1000W之间这些数全部生成。
     * (考察高效率,解决产生冲突的问题)
     */
    private static void testRandom() {
        int value = 10000000;
        //int类型最大值:2的32次方 - 1 = Integer.MAX_VALUE = 2147483647,二十亿多,真够啦 。
        Set<Integer> result = Sets.newHashSetWithExpectedSize(value);
        Random random = new Random();
        long a = System.currentTimeMillis();
        while (result.size() < value + 1) {
            int i = random.nextInt(value + 1);
            result.add(i);
        }
        System.out.println("r<br> 执行耗时 : " + (System.currentTimeMillis() - a) / 1000f + " 秒 ");
        System.out.println("完了,集合大小为" + result.size());
    }

具体代码执行结果,如下图:



因为一千万个都打印 出来,不合适;就打印个集合大小就可以了吧。再打印个执行时间。

但是效率好像并没有提升太多。
但是怎么在,产生随机数的时候,修改,使得效率,再次提高。即产生过的数就不再被随机到。
这个我就不知道啦,估计得研究下Random这个类的所有方法才可以吧。
待以后更新。


(当然集合里面多随机生产了个0,再添加一行代码:result.remove(0);就可以把多余的0给去掉,然后就是正确的结果了。)



最后

以上就是拼搏钢笔为你收集整理的使用随机算法产生一个数,要求把1-1000W之间这些数全部生成。的全部内容,希望文章能够帮你解决使用随机算法产生一个数,要求把1-1000W之间这些数全部生成。所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部