【生成随机数序列】
我们只能利用Math.random()方法只能生成一个在[0,1)之间的double类型浮点数。
但如果我们想要生成[min, max]之间的随机整数时该怎么办呢?
此时可以用:
int rdmNum = (int) (Math.random() * (max + 1 - min) + min);
【随机数生产器(存在重复随机数)】
public static int[] createRandomArray(int arrLength, int rdmMin, int rdmMax) {
//根据所给数组长度,生成所要的数组 int[] arr = new int[arrLength];
//给数组赋随机值 for (int i = 0; i < arr.length; i++) { arr[i] = (int) (Math.random() * (rdmMax + 1 - rdmMin) + rdmMin); }
//返回这个数组 return arr; }
【不重复随机数生产器(元素个数超过100000个时,比较吃力。这个生产器比较死,范围是[0,length)之间的数)】
public static int[] createRandomNoRepeatArray(int length) { Random rdm = new Random(); // 随机数数组 int[] arr = new int[length]; // 存放有序数字集合 List<Integer> list = new ArrayList<Integer>(); // 随机索引 int index = 0; for (int i = 0; i < length; i++) { list.add(i); } for (int i = 0; i < length; i++) { index = rdm.nextInt(length - i); arr[i] = list.get(index); list.remove(index); } return arr; }