撲克牌算法(1)


操作步驟:

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

運算結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM