问题:斗地主游戏,开局会将纸牌重新打乱,请用数组的随机排序实现
思考:
一、
遍历当前数组,Random.next位置下标取值放入新的数组中,为了一定随机不会取重,再加判断是否已加入过新的数组中
二、
正序或逆序遍历数组;将当前位置的元素与Random.next位置的元素调换位置
三、调用工具类
[url=http://mingyundezuoan.iteye.com/admin/blogs/2397875]Arrays.asList[/url]
[url=http://mingyundezuoan.iteye.com/blog/2397871]Collections.shuffle[/url]
思考:
一、
遍历当前数组,Random.next位置下标取值放入新的数组中,为了一定随机不会取重,再加判断是否已加入过新的数组中
二、
正序或逆序遍历数组;将当前位置的元素与Random.next位置的元素调换位置
/**
* 打乱数组中元素的顺序
* @param args
*/
public static void randomAccessArray(String[] argsArray){
String[] cloneArray = argsArray.clone();
int length = cloneArray.length ;
Random random = new Random();
for(int index = 0 ; index < length ; index++){
int nextInt = random.nextInt(length);
String temp = cloneArray[index];
cloneArray[index] = cloneArray[nextInt];
cloneArray[nextInt] = temp ;
}
for(int index = 0 ; index < length ; index++){
System.out.print(cloneArray[index]+" ");
}
}
三、调用工具类
/**
* 调用工具类
* @param argsArray
*/
public static void collectionMethod(String[] argsArray){
int length = argsArray.length;
Collections.shuffle(Arrays.asList(argsArray));
for(int index = 0 ; index < length ; index++){
System.out.print(argsArray[index]+" ");
}
}
[url=http://mingyundezuoan.iteye.com/admin/blogs/2397875]Arrays.asList[/url]
[url=http://mingyundezuoan.iteye.com/blog/2397871]Collections.shuffle[/url]