import java.util.Collections; import java.util.LinkedList; import java.util.List;public class CartDemo { public static void main(String[] args) { int[] cards = new CartDemo().getCards(); for (int i : cards) { System.out.print(i+" "); } } public int[] getCards(){ List<Integer> list = new LinkedList<Integer>(); int index = 1; for (int i = 0; i < 52; i++) { list.add(index++); } Collections.shuffle(list); int[] cards = new int[52]; for (int i = 0; i < cards.length; i++) { cards[i] = list.remove(0); } return cards; } } 这个是别人帮我写的一个,实现的很简单,代码简洁清晰
这个是用Ramdom编写的,性能应该不太好 import java.util.Random; public class CartDemo1 { public static void main(String[] args) { int[] cards = new CartDemo1().getCards(); for (int i : cards) { System.out.print(i+" "); } } public int[] getCards(){ boolean[] isGet = new boolean[52]; int[] cards = new int[52]; Random r = new Random(); int index = 0; while(true){ int i = r.nextInt(52); if(isGet[i]){ continue; } isGet[i] = true; cards[index++] = i+1; if(index == 52){ break; } } return cards; } }
用链表保存最开始的数字,比较合适,因为移除对象效率很高。 设计链表保存 1 - 52 之间的数字 。 LinkList pukeList ;第一步:实例化一个 int[52] 的数组第二步: int index = 0 ; whlie(pukeList.length > 0 ){ int i = Random.nextInt(pukeList.length); // 去数组长度里面的随机数 int[index++] = pukeList.remove(i); }
public static void main(String[] args) { Random r = new Random(); LinkedList<Integer> array = new LinkedList<Integer>(); for (int i = 0; i < 52; i++) { array.add(i); }
int puke[] = new int[52];
int i = 0 ; while(array.size() > 0){ int index = r.nextInt(array.size()); puke[i++] = array.remove(index); }
System.out.println(Arrays.toString(puke)); }
如果不考虑的话 看下这个public class RandomPuke { public static void main(String[] args) { List<Integer> list = new ArrayList<Integer>(); for(int i=1;i<=52;i++){ list.add(i); // 添加到数组列表去。 } Collections.shuffle(list); // 让列表内容随机重组 int[] card =new int[52]; for(int s=0;s<list.size();s++){ card[s]=list.get(s); // 放到数组里 } System.out.println(Arrays.toString(card)); //打印出来 } }
import java.util.LinkedList;
import java.util.List;public class CartDemo {
public static void main(String[] args) {
int[] cards = new CartDemo().getCards();
for (int i : cards) {
System.out.print(i+" ");
}
}
public int[] getCards(){
List<Integer> list = new LinkedList<Integer>();
int index = 1;
for (int i = 0; i < 52; i++) {
list.add(index++);
}
Collections.shuffle(list);
int[] cards = new int[52];
for (int i = 0; i < cards.length; i++) {
cards[i] = list.remove(0);
}
return cards;
}
}
这个是别人帮我写的一个,实现的很简单,代码简洁清晰
import java.util.Random;
public class CartDemo1 {
public static void main(String[] args) {
int[] cards = new CartDemo1().getCards();
for (int i : cards) {
System.out.print(i+" ");
}
}
public int[] getCards(){
boolean[] isGet = new boolean[52];
int[] cards = new int[52];
Random r = new Random();
int index = 0;
while(true){
int i = r.nextInt(52);
if(isGet[i]){
continue;
}
isGet[i] = true;
cards[index++] = i+1;
if(index == 52){
break;
}
}
return cards;
}
}
用链表保存最开始的数字,比较合适,因为移除对象效率很高。
设计链表保存 1 - 52 之间的数字 。
LinkList pukeList ;第一步:实例化一个 int[52] 的数组第二步:
int index = 0 ;
whlie(pukeList.length > 0 ){
int i = Random.nextInt(pukeList.length); // 去数组长度里面的随机数
int[index++] = pukeList.remove(i);
}
public static void main(String[] args) {
Random r = new Random();
LinkedList<Integer> array = new LinkedList<Integer>();
for (int i = 0; i < 52; i++) {
array.add(i);
}
int puke[] = new int[52];
int i = 0 ;
while(array.size() > 0){
int index = r.nextInt(array.size());
puke[i++] = array.remove(index);
}
System.out.println(Arrays.toString(puke));
}
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
for(int i=1;i<=52;i++){
list.add(i); // 添加到数组列表去。
}
Collections.shuffle(list); // 让列表内容随机重组
int[] card =new int[52];
for(int s=0;s<list.size();s++){
card[s]=list.get(s); // 放到数组里
}
System.out.println(Arrays.toString(card)); //打印出来
}
}