1
import java.util.Random;
2
3
public class Util
{
4
/** *//**隨機對象*/
5
private static Random rd = null;
6
7
/** *//**
8
* 返回一個無重復的隨機數組
9
* @param src 來源數組,所有的數據都來自該數組
10
* @return 處理好的數組
11
*/
12
public static int[] random(int[] src)
{
13
//如果源數組為空,則返回
14
if(src == null)
{
15
return null;
16
}
17
18
rd = new Random();
19
20
//創建返回數組
21
int[] tmp = new int[src.length];
22
//可供選擇的數據個數
23
int num = src.length;
24
25
//抽取到的數組的下標
26
int index;
27
//隨機抽取,如果某個數字被抽取,則置該數字為0,并放到數組的末尾
28
for(int i = 0;i < src.length;i++)
{
29
//隨機生成下標
30
index = Math.abs(rd.nextInt()) % num;
31
//取該值
32
tmp[i] = src[index];
33
//交換數據
34
src[index] = src[num - 1];
35
//可選擇數量減少1
36
num--;
37
}
38
//返回
39
return tmp;
40
}
41
42
public static void main(String[] args)
{
43
int[] test =
{1,2,3,4,5,6,7,8,9};
44
int a[] = random(test);
45
46
for(int i = 0;i < a.length;i++)
{
47
System.out.println(a[i]);
48
}
49
}
50
51
}

2

3



4


5

6

7


8

9

10

11

12



13

14



15

16

17

18

19

20

21

22

23

24

25

26

27

28



29

30

31

32

33

34

35

36

37

38

39

40

41

42



43



44

45

46



47

48

49

50

51
