java 随机数高效生成
来源:互联网 发布:淘宝网买盗版课程犯法 编辑:程序博客网 时间:2024/05/20 21:20
分享牛,分享牛原创。近期去面试经常被问到java如何生产随机数,以及生成很大的字符串保证不能重复,还要考虑性能,之前本人面试别人的时候,可能不会问这个问题。既然这个java随机数问题经常被问到,那咱们也就写几种实现方式吧。仅供参考。
1.1.1. 第一种方式
第一种方式,咱们考虑一下,生成的字符串不能重复,怎么办呢?首先想到hashMap、hashSet的特性吧。那怎么就先用这种方式实现吧。以下是hashMap的实现方式。
public static void main(String[] args) { Object[] values = new Object[100]; Random random = new Random(); HashMap<Object, Object> hashMap = new HashMap<Object, Object>(50); // 生成随机数字并存入HashMap for(int i = 0;i < values.length;i++){ int number = random.nextInt(100) + 1; hashMap.put(number, i); } values=hashMap.keySet().toArray(); // 遍历数组并打印数据 for(int i = 0;i < values.length;i++){ System.out.print(values[i] + "\t"); }}
这里需要注意的就是hashMap中的增长因子的问题了。要尽量避免HashMap中的数组扩容问题。
hashMap中的构造函数两个参数的含义:
初始容量,加载因子。
1.1.2. 第二种方式
可以把希望生成的值放入到一个数组中,然后程序随机去读取数组中任意两个坐标,如果坐标相等则继续随机,如果坐标不相等,就交换两个坐标的值。具体的实现如下:
int values[] = new int[100]; int temp1,temp2,temp3; Random r = new Random(); //初始化数组 for(int i = 0;i < values.length;i++){ values[i] = i + 1; } //随机交换values.length次 for(int i = 0;i < values.length;i++){ temp1 = Math.abs(r.nextInt()) % (values.length-1); //随机产生一个位置 temp2 = Math.abs(r.nextInt()) % (values.length-1); //随机产生另一个位置 if(temp1 != temp2){ temp3 = values[temp1]; values[temp1] = values[temp2]; values[temp2] = temp3; } } // 遍历数组并打印数据 for(int i = 0;i < 20;i++){ System.out.print(values[i] + "\t"); }
1.1.3. 总结
个人觉得数组第二种的方式比较快,因为数组的访问速度快。这也是数组结构决定的。
分享牛原创(尊重原创 转载对的时候第一行请注明,转载出处来自分享牛http://blog.csdn.net/qq_30739519)
1 0
- java 随机数高效生成
- 高效随机数生成
- PHP高效生成一个不重复随机数
- php生成随机数,简单高效的方法
- Java随机数生成
- java随机数的生成
- java生成随机数详解
- java生成随机数
- java生成随机数
- java生成随机数
- java生成随机数
- [转]JAVA生成随机数
- java生成随机数
- (转)java生成随机数
- java 生成随机数
- java生成随机数
- java生成newid随机数
- JAVA生成特定随机数
- Python Tricks(七)—— 使用 list 仿真先入先出的队列(FIFOQueue)
- 【干货】国外程序员整理的 C++ 资源大全
- Kaldi语音识别工具运行TIMIT数据库实例
- JSPatch技术文档
- JavaScript事件处理指南手册
- java 随机数高效生成
- 新手使用React时遇到的问题整理<一>
- 尝试自己写简单的retinex
- 字符设备自动创建设备节点
- Android 4层框架
- UNIX环境高级编程 第四章末
- 从ffmpeg源代码分析如何解决ffmpeg编码的延迟问题
- Hdu oj 1002 A + B Problem II(大数加法)
- swift 字符、元组、随机数、区间运算、操作符重载——swift学习(三)