扑克牌算法(1)

时间:2021-04-26 11:14:46

操作步骤:

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

运算结果:

扑克牌算法(1)