一个不错的算法,很简单,但有效。不过如果范围比较大,则占用内存大,就不推荐使用了。个人感觉1000个以内的就可以考虑。这东西也许你早就知道了,但我依然惊叹算法的力量。
看代码
- import java.util.*;
- public class T {
- public static void main(String[] args) {
-
- int[] seed = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
- int[] ranArr = new int[9];
- Random ran = new Random();
-
- for (int i = 0; i < seed.length; i++) {
-
- int j = ran.nextInt(seed.length - i);
-
- ranArr[i] = seed[j];
-
- seed[j] = seed[seed.length - 1 - i];
- }
- System.out.println("ranArr:" + Arrays.toString(ranArr));
- }
- }
一个运行结果
ranArr:[6, 3, 5, 9, 7, 2, 8, 4, 1]