public class TestBaiduKnow
{
static char[] letters={'a','b','c'}
static int n = letters.length
static Random random= new Random(13579)
public static void main(String[] args){
System.out.println("初始状态:")
for(int i = 0i<letters.lengthi++)
System.out.println(letters[i]+" ")
for(int i = 0i<Math.pow(n, 4)i++){
shuffle(letters)
}
System.out.println("\n"+"经过shuffle后:")
for(int i = 0i<letters.lengthi++)
System.out.println(letters[i]+" ")
}
private static void shuffle(char[] letters) {
int n1 = random.nextInt(n)
int n2 = random.nextInt(n)
char c
c=letters[n1]
letters[n1] = letters[n2]
letters[n2] = c
}
}
举个例子吧 a[6] 下标分别是 0 1 2 3 4 5然后用romdom取出0~5中随机一个整数 比如是2
那就让a[0] 和 a[2] 调换数据。
第二次取1~5 比如是2
此时就让新的下标的a[1] 和 a[2] 调换
如此循环6-1次
就得到打乱的数组了
// ShuffleTest.java
import java.util.*
public class ShuffleTest {
public static void main(String[] args) {
List<Integer>list = new ArrayList<Integer>()
for (int i = 0i <10i++)
list.add(new Integer(i))
System.out.println("打乱前:")
System.out.println(list)
for (int i = 0i <5i++) {
System.out.println("第" + i + "次打乱:")
Collections.shuffle(list)
System.out.println(list)
}
}
}