头条面试题:52张去掉大小王扑克牌平均分给4人,每人13张牌,要求随机分配

本道题难点为随机分配,要做到随机,就必须进行洗牌,本题我们采用随机数进行洗牌,先将52张扑克牌放入数组中,产生0-51的随机数,将随机数索引处的牌与当前遍历索引的牌进行交换来进行洗牌,最后将牌发给4人,最后呈上代码:

    public static void main(String[] args) {
        String[] Pukepai=new String[52];
        String[] type={"黑","红","梅","方"};
        Random ran=new Random();
        int index=0;
        //将52张牌放入数组中
        for(String s:type){
            for(int i=1;i<14;i++){
                Pukepai[index++]=s+i;
            }
        }
        //洗牌,j将产生随机数的索引与遍历索引的数字做交换,进行洗牌
        for(int i=0;i<52;i++){
            int ranindex=ran.nextInt(52);
            String str=Pukepai[i];
            Pukepai[i]=Pukepai[ranindex];
            Pukepai[ranindex]=str;
        }
        //将扑克牌分给4人,每人为数组中的一列
        String[][] result=new String[4][13];
        for(int i=0;i<52;i++){
            result[i/13][i%13]=Pukepai[i];
        }
        //分别输出没人分得的排,中间用******隔开
        for(String[] ROW:result){
            for(String COL:ROW){
                System.out.println(COL);
            }
            System.out.println("***********");
        }
    }

你可能感兴趣的:(算法)