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;
}
}
}

java 随机打乱数组
方法一:使用java自带工具的方法shuffle()。shuffle方法在java.util.Collections下,可以查下。例如代码:List list = Arrays.asList(arr);Collections.shuffle(list);方法二:数组下标index,取index+1到size-1的随机数为下标与以index为下标的数交换位置。对以 上操作遍历一遍就可以了。方法三:用ra...

关于java数组的随意打乱,像图中的做法不会出现重复吗?比如两个math.ran...
不会,随机数都相等,自己跟自己交换又没关系。你这本书是java语言程序设计,李娜翻译的。它还有一本进阶版。随机打乱数组而已,而且还是伪随机,藏!

Java打乱数组
void srand(int[] a){ int len=a.length;\/\/如果数组元素不足3,则没必要运算,特别是当数组只有一个元素时,会进入死循环 if(len<3){ return;} Random r=new Random();for(int i=0,n=0,temp=0;i<len;i ){ \/\/随机生成一个位置,两个位置的元素互换 do{ n=r.nextInt(len);}wh...

【java】求助怎么把一个数组元素随机打乱顺序,谢谢~~~
String[] arr = new String[] {"1", "2"};List list = Arrays.asList(arr);直接调用shuffle,就是随机排序 例:Collections.shuffle(list);直接输出就是你想要的结果

Java输入一个有序的数组,输出一个打乱的数组。
比如数组是a[i], i = 10;你就去random 0到10的数,比如得到 j, 你就输出a[j] 重复了就把这个数扔了

java 如何用math.random打乱数组里的所有元素
public class Main {\/** * 比如这样的数组{"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A" * } * * 只用math.random不能导入别的包或者用list 不是实际打乱数组里面的元素顺序,是“打印”出全部13个元素,要求随机顺序, 不按照 * "2", ...

自学java,帮忙解释一下这个程序其中的过程,比如这三个loop在其中的作用...
所以在看第一个循环,每一个牌都被赋值,从0到51 0表示花色是(0)spades,点数是ACE,1表示花色是sapdes,点数是2 以此类推,相当于第一个循环就是把一副牌的花色分开,点数从小到大排列,用序号表示每张牌 第二个循环就是随机一个序号,然后交换值,相当于洗牌 第三个循环就是输出最上面的四张...

给一个有序的字符串怎么用java语言实现打乱顺序
取一个随机数,这个数就是你目标串的长度n 然后取n个随机数,取模到数组长度,然后合起来就完了...

java中随即生成7个1到35之间的数不重复的,请问不重复的方法怎么写下面完...
{ data[i] = i+1;} \/\/把数组打乱 randomizeInPlace(data);\/\/显示打乱后的数据 show(data);\/\/show(data)可以稍微修改为,显示前7个数。这里就不写了,你自己写吧 } \/ 元素data[i]是从 元素data[i]到data[n]中随机选取的 \/ private static void randomizeInPlace(int[] data){ Date dt...

java52张扑克牌问题
(2)请编写模拟洗牌的完整程序,即把数组deck中的扑克牌随机打乱存放顺序。原题如下:引用内容 private String face; \/\/ A, K, Q, J, 10, ... 2 private String suit; \/\/ Spade, Heart, Club, Diamond public Card(String suit, String face) { this.face = face;this.suit = suit;} ...

相似回答