随机不重复原理:
重要思路,通过设置标志判断重复,达到不重复。
判断重复,直接通过改变多个元素为一个标志,则能够简单实现重复判断。
这个思路其实在前面做棋盘中的随机位置的时候就已经有过相似的思路,只是自己不会 触类旁通 举一反三。
核心思路:将已经用过的数设置为一个二分判断的标志,类似于boolean类型的是和否。
题目:
生成一个0~9间的随机不重复数组
package com.share.demo03_27;
import java.util.Arrays;
/**
* 生成一个0~9的顺序随机不重复数组<br>
* 思路:<br>
* 两个数组,<br>
* 一个存储0~9的顺序不随机不重复数组<br>
* 一个存储0~9的顺序随机不重复数组,这是需要得到的结果<br>
* <p>
* 随机数是第一个数组的下标,取出第一个数组中的值,将第一个数组中的该值设置为一个标志<br>
* 下一次取数的时候,只有下标不为标志的才能够取,从而达到了不重复<br>
*
* @author brx
*/
public class Test {
public static void main(String[] args) {
test();
}
/**
* 核心思路:<br>
* 设置a[r]=-1;将已经用过的数设置为一个二分判断的标志,类似于boolean类型的是和否
*/
public static void test() {
int[] a = new int[10];
int[] b = new int[10];
for (int i = 0; i < 10; i++) {
a[i] = i;
}
for (int i = 0; i < 10; i++) {
int r = 0;
do {
r = (int) (Math.random() * 10);
} while (a[r] == -1);
b[i] = a[r];
a[r] = -1;
}
System.out.println(Arrays.toString(b));
}
}