操作步骤:
(1)首先,按顺序生成一副扑克牌。
(2)从1~52生成一个随机数,按这个随机数从扑克牌中取牌,换牌。
(3)重复(2)步骤52次,已达到洗牌的目的。
1 import java.util.Random; 2 3 class Card{ 4 int Suit;//花色 5 char number;//牌数 6 } 7 public class wicket { 8 static Card[] OneCard=new Card[52];//保存每张扑克的花色,数字 9 static void ShowCard(){//显示扑克牌 10 int i,j; 11 int sign=0; 12 String s=""; 13 for(i=0,j=0;i<52;i++,j++) { 14 if(j%13==0) { 15 System.out.print("\n"); 16 } 17 switch(OneCard[i].Suit) {//显示花色符号 18 case 1: 19 s="黑桃"; 20 sign=3; 21 break; 22 case 2: 23 s="红桃"; 24 sign=4; 25 break; 26 case 3: 27 s="梅花"; 28 sign=5; 29 break; 30 case 4: 31 s="方块"; 32 sign=6; 33 break; 34 default : 35 ; 36 } 37 System.out.printf(" "+s+OneCard[i].number);//输出 38 } 39 System.out.print("\n"); 40 } 41 static void Shuffle() { 42 int i,j,temp; 43 int suit; 44 suit=0; 45 Card tempcard=new Card(); 46 for(i=0;i<52;i++) {//生成52张牌 47 if(i%13==0) 48 { 49 suit++;//改变花色 50 } 51 Card t=new Card(); 52 t.Suit=suit;//保存花色 53 temp=i%13;//特殊值处理 54 switch(temp) { 55 case 0: 56 t.number='A'; 57 break; 58 case 9: 59 t.number='o'; 60 break; 61 case 10: 62 t.number='J'; 63 break; 64 case 11: 65 t.number='Q'; 66 break; 67 case 12: 68 t.number='K'; 69 break; 70 default: 71 t.number=(char)(temp+'1'); 72 } 73 OneCard[i]=t; 74 } 75 System.out.printf("一副新牌的初始排列如下:\n"); 76 ShowCard(); 77 Random r=new Random();//随机种子 78 for(i=0;i<52;i++) { 79 j=r.nextInt(52);//随机换牌 80 tempcard=OneCard[j]; 81 OneCard[j]=OneCard[i]; 82 OneCard[i]=tempcard; 83 } 84 } 85 public static void main(String []args) { 86 Shuffle(); 87 System.out.print("\n 洗牌后的排列如下: \n");//洗牌 88 ShowCard();//显示新牌的排列 89 } 90 }
运算结果: