java 随机打乱数组

定义一个长度为52的整型数组,分别存放1,2,3,4...52这52个数,打乱这52个数的次序,输出结果。俺是一个新手,程序能简单就尽量简单点。。。

知道三种方法,方法一最简单.
方法一:
使用java自带工具的方法shuffle()。shuffle方法在java.util.Collections下,可以查下。

例如代码:
List list = Arrays.asList(arr);
Collections.shuffle(list);

方法二:数组下标index,取index+1到size-1的随机数为下标与以index为下标的数交换位置。对以 上操作遍历一遍就可以了。
方法三:用rand产生size个0到size-1的随机不重复的数。以上面产生的数为下标,重新得到新的数 组。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-29
import java.util.Random;

public class RandomSort {
private Random random = new Random();
//数组大小
private static final int SIZE = 10;
//要重排序的数组
private int[] positions = new int[SIZE];

public RandomSort() {
for(int index=0; index<SIZE; index++) {
//初始化数组,以下标为元素值
positions[index] = index;
}
//顺序打印出数组的值
dwn();
}

//重排序
public void changePosition() {
for(int index=SIZE-1; index>=0; index--) {
//从0到index处之间随机取一个值,跟index处的元素交换
exchange(random.nextInt(index+1), index);
}
dwn();
}

//交换位置
private void exchange(int p1, int p2) {
int temp = positions[p1];
positions[p1] = positions[p2];
positions[p2] = temp;
}

//打印数组的值
private void dwn() {
for(int index=0; index<SIZE; index++) {
System.out.print(positions[index]+" ");
}
System.out.println();
}

public static void main(String[] args) {
RandomSort rs = new RandomSort();
rs.changePosition();
rs.changePosition();
rs.changePosition();
}
}
希望可以帮助到你。
第2个回答  2013-03-29
public static void main(String[] args) {
int[] num = new int[52];
for (int i = 1; i <= 52; i++) {
num[i - 1] = i;
}
List<Integer> list = new ArrayList<Integer>();
for (int i : num) {
list.add(i);
}
int out = 0;
int outIndex = 0;
for (int i = 0; i < num.length; i++) {
Random ran = new Random();
outIndex = ran.nextInt(list.size());
out = list.get(outIndex);
list.remove(outIndex);
System.out.print(out+" ");
}
}本回答被网友采纳
第3个回答  2013-03-29
random随机产生1-52之间数字输出,并保存,循环52次,每次得到一个数与原先得到数字比较,不同则输出,相同继续random,然后。。。。你懂得
第4个回答  2013-03-29
public static void main(String[] args) {
int[] num = new int[52];
for (int i = 1; i <= 52; i++) {
for(int j=1;j<=52-i-1;j++){
if(num[j]>num[j+1]){
int temp = num[j];
num[j]=num[j+1];
num[j+1]=temp;
}
}
}