• 扑克牌算法(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("
    ");
    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("
    ");
    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("一副新牌的初始排列如下:
    ");
    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("
     洗牌后的排列如下: 
    ");//洗牌
    88         ShowCard();//显示新牌的排列
    89     }
    90 }

    运算结果:

  • 相关阅读:
    c++ 左值和右值
    C++的顶层const和底层const的理解
    TCP/IP模型中的网络层
    有关TCP/IP模型中的网络接入层
    计算机网络协议与IPv4地址
    浅析计算机网络
    海思Android开发平台如何自定义update.zip内容
    Android平台RTL蓝牙适配偶现打不开问题调试笔记
    Android的SoundPool
    Android开发之IntentService
  • 原文地址:https://www.cnblogs.com/mianyang0902/p/10805220.html
Copyright © 2020-2023  润新知