一幅牌随抽出15张,用JAVA怎么写?

解决方案 »

  1.   

    把这副牌放list啊,然后通过random方法随机生产一个0~1之间的数,乘以牌数就可以得到一个随机的数组下标了啊,然后就可以得到随机得到一个牌了,然后在list里把这个牌去掉,再循环或者递归就好了
      

  2.   

    random方法随机生产一个0~1之间的数,乘以牌数就可以得到一个随机的数组下标
    这个公平吗?
    不如随机产生一个0~list.length-1的整数i
    i即list中牌的下标
      

  3.   

    产生的随机数乘以牌数后得到一int型数,如果有两个相等怎么办?
    可以先把牌加到一个List里面,然后掉用Collections类的shuffle方法对List数组进行随机排序,然后再随便从这个List中取出15个元素就可以了
      

  4.   

    直接使用Collections.shuffle(List<?> list)打乱一下顺序,取前15张就可以了。
        public static void main(String[] args) {
            final int length = 13;
            String[] hearts = new String[length];
            String[] spades = new String[length];
            String[] diamonds = new String[length];
            String[] clubs = new String[length];
            List<String> list = new ArrayList<String>(4 * length + 2);        for (int i = 0; i < length; ++i) {
                String ch;
                int value = i + 1;
                if (value == 1) {
                    ch = "A";
                } else if (value == 11) {
                    ch = "J";
                } else if (value == 12) {
                    ch = "Q";
                } else if (value == 13) {
                    ch = "K";
                } else {
                    ch = "" + value;
                }            hearts[i] = "heart " + ch;
                spades[i] = "spade " + ch;
                diamonds[i] = "diamond " + ch;
                clubs[i] = "club " + ch;            list.add(hearts[i]);
                list.add(spades[i]);
                list.add(diamonds[i]);
                list.add(clubs[i]);
            }
            list.add("Red Joker");
            list.add("Black Joker");        System.out.println(list);
            Collections.shuffle(list);
            System.out.println(list);
            List<String> subList = list.subList(0, 15);
            System.out.println(subList);    }
      

  5.   


    不用list,一副牌按顺序编号,1~54,产生1~54间的随机数,然后换算成花色和数字就好了,53、54两张牌算做大小鬼就行了。