1
import java.util.Random;
2
3
public class Util
{
4
/** *//**隨機(jī)對象*/
5
private static Random rd = null;
6
7
/** *//**
8
* 返回一個無重復(fù)的隨機(jī)數(shù)組
9
* @param src 來源數(shù)組,所有的數(shù)據(jù)都來自該數(shù)組
10
* @return 處理好的數(shù)組
11
*/
12
public static int[] random(int[] src)
{
13
//如果源數(shù)組為空,則返回
14
if(src == null)
{
15
return null;
16
}
17
18
rd = new Random();
19
20
//創(chuàng)建返回數(shù)組
21
int[] tmp = new int[src.length];
22
//可供選擇的數(shù)據(jù)個數(shù)
23
int num = src.length;
24
25
//抽取到的數(shù)組的下標(biāo)
26
int index;
27
//隨機(jī)抽取,如果某個數(shù)字被抽取,則置該數(shù)字為0,并放到數(shù)組的末尾
28
for(int i = 0;i < src.length;i++)
{
29
//隨機(jī)生成下標(biāo)
30
index = Math.abs(rd.nextInt()) % num;
31
//取該值
32
tmp[i] = src[index];
33
//交換數(shù)據(jù)
34
src[index] = src[num - 1];
35
//可選擇數(shù)量減少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
