您的位置:首页 > 其它

生成不重复的随机数

2017-11-20 22:51 113 查看
package cn.wwz.test;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Random;

/**
* 利用HashMap不允许出现重复值的特点 产生随机不重复的数组
* @Author WWZ
* @Date 2017-11-20下午10:34:34
*/
public class Dichotomy {
/**
* 封装了一个生成有序排序、无重复的随机数组
* @param number 生成随机数的个数
* @param size  生成随机数的范围
*/
public void getNum(int number,int size) {
Random random = new Random();
HashSet<Object> set = new HashSet<Object>();
long a = System.currentTimeMillis();
// HashSet 实现
a = System.currentTimeMillis();
System.out.println((System.currentTimeMillis() - a) / 1000f + " 秒 ");
while (set.size() < number) {
int num = random.nextInt(size);
set.add(num);
}
Object[] arrays = set.toArray();    //满足题意的数组,需要用for循环逐个取出转化 这里不做演示了
System.out.println("共花费:" + (System.currentTimeMillis() - a) / 1000f
+ " 秒 ");
Arrays.sort(arrays);
int j = 0;
int z = 2;
System.out.print("第1行\t");
for (int i = 0; i < arrays.length; i++) {
j++;
System.out.print(arrays[i] + "\t");
if (j % 10 == 0 && z < 11) {
System.out.println();
System.out.print("第" + z + "行\t");
z++;
}
}
}

public static void main(String[] args) {
Dichotomy dy = new Dichotomy();
dy.getNum(100, 10000);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: