使用随机算法产生一个数,要求把1-1000W之间这些数全部生成。
来源:互联网 发布:织梦小说源码 编辑:程序博客网 时间:2024/06/01 09:50
使用随机算法产生一个数,要求把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给去掉,然后就是正确的结果了。)
0 0
- 使用随机算法产生一个数,要求把1-1000W之间这些数全部生成。
- 使用随机算法产生一个数,要求把1-1000W之间这些数全部生成
- 使用随机算法产生一个数,要求把1-1000W之间这些数全部生成
- 随机生成一个数
- 随机产生一些数传递给一个函数,写程序找出并维护这些数的中位数。
- C#声明一个100大小的数组 随机生成1-100之间不重复的数
- C#声明一个100大小的数组 随机生成1-100之间不重复的数
- srand函数随机产生一个数_1
- 随机产生不同数
- 随机产生数
- 随机产生12个5~15之间的整数放入一位数组中,然后输出这些数,每行输出四个数
- 随机产生 20 个[10 , 100]的正整数,输出这些数以及他们中的最大数
- 随机生成文件名字或随机生成一个数
- 一个随机生成数独的程序
- java后台随机生成一个数
- java中怎样随机生成一个数
- 实训JAVA语言设计——产生一个2-K之间的随机整数,判断一个数是否是素数
- 随机产生N个中和为1的(0-1)之间的数
- Remix OS 安装及初次使用心得
- 学习tomcat之通过shell批量管理多个tomcat
- Unity3D follow.
- iOS APP图标一键生成
- lua定时器与定时任务的接口设计
- 使用随机算法产生一个数,要求把1-1000W之间这些数全部生成。
- 15章 上机1
- 123. Best Time to Buy and Sell Stock III(dp)
- sha1签名
- 15章 上机4商品批发显示总金额
- [深度学习论文笔记][Weight Initialization] Delving deep into rectifiers: Surpassing human-level performance
- 如何判断用户是拒绝还是允许通讯录权限?
- java练习--判断字符出现次数
- 遍历map的四种方式