• java洗牌(shuffle)简单算法(三种实现)


    package shuffle;
    public class shuffle {//入口

        public static void main(String[] args) {
        pPoker a=new pPoker();
        System.out.println("请验牌************");    
        a.getPokerPoint();
        System.out.println();
        System.out.println("洗牌中");
        a.shuffleOne();
        a.getPokerPoint();
        System.out.println();
        System.out.println("洗牌中");
        pPoker b=new pPoker();
        b.shuffleTwo();
        b.getPokerPoint();
        System.out.println();
        System.out.println("洗牌中");
        pPoker c=new pPoker();
        c.shufffeThree();
        c.getPokerPoint();
        }
    }

    package shuffle;

    public class poker {//牌(数据类型),
        
             public String point;
             public String color;
             public poker(String x,String y)
             {
                 point=x;
                 color=y;
             }
        
    }

    package shuffle;

    public class pPoker {//洗牌人,洗牌人实现洗牌具体操作
        private poker []poker=new poker[54];
        private String []point;
        private String[] color;
        public pPoker()
        {
            
            point=new String [] {"A","2","3","4","5","6","7","8","9","10","j","Q","k"};
             color=new String []{ "♥", "♣", "♦", "♠"};
             int k=0;
             for(int i=0;i<13;i++)
             {
                 for(int j=0;j<4;j++)
                   {poker[k]=new poker(point[i],color[j]);k++;}
             }
                poker[52]=new poker("JOKER","小");
                poker[53]=new poker("JOKER","大");
        }
        public poker[] getPokerPoint()
        {
            for(int i=0;i<54;i++)
            {
                System.out.print(poker[i].color+poker[i].point);
            }
            return poker.clone();
        }
        public void shuffleOne()
        {
            String []temC=new String[54];
            String []temP=new String[54];
            for(int j=0;j<3;j++)
            {
            for(int i=0;i<54;i++)
            {
                 temC[i]=poker[i].color;
                 temP[i]=poker[i].point;
            }
        
            for(int i=0;i<27;i++)
            {
                 poker[2*i].color=temC[i+27];
                 poker[2*i].point=temP[i+27];
                 poker[2*i+1].color=temC[i];
                 poker[2*i+1].point=temP[i];
            }
            }
        }
        public void shuffleTwo()
        {
            for(int i=0;i<53;i++)
            {
                int t=(int)(Math.random()*(53-i));
                poker tem=poker[t];
                poker[t]=poker[53-i];
                poker[53-i]=tem;
            }
            
        }
        public void shufffeThree()
        {
            
            for(int i=0;i<54;i++)
            {
                int r=(int)(Math.random()*54);
                if(poker[i]!=poker[r])
                {
                    poker temp=poker[i];
                    poker[i]=poker[r];
                    poker[r]=temp;
                }
            }
        }
    }

    点滴
  • 相关阅读:
    Qt获取程序工作目录或某路径下所有的图片或指定格式的文件
    QGraphicsView Class
    自动白平衡---灰度世界算法
    Gamma校正算法原理及实现
    QWidget,QTableWidget删除(delete)动态添加(new)的子控件释放内存
    [转]【OpenCV】OpenCV中GPU模块使用
    php之trait 个人笔记
    git 本地忽略某些个文件
    bootstrop-datatime参数配置
    mysql 一次性插入上万条数据测试专用
  • 原文地址:https://www.cnblogs.com/lst601z815/p/4922101.html
Copyright © 2020-2023  润新知