黑马程序员技术交流社区

标题: 用Collections中的shuffle方法模拟斗地主的洗牌 [打印本页]

作者: My_Android    时间: 2016-6-1 23:55
标题: 用Collections中的shuffle方法模拟斗地主的洗牌
  1. package com.bjsxt.sort.util.collections;
  2. import java.util.ArrayList;
  3. import java.util.Collections;
  4. import java.util.List;
  5. public class CollectionsDemo01{
  6.    
  7.     public static void main(String[] args) {
  8.         
  9.         List<Integer> cards = new ArrayList<Integer>();
  10.         
  11.         //shuffle 洗牌 ,模拟斗地主
  12.         
  13.         for(int i=0;i<54;i++){
  14.             
  15.             cards.add(i);
  16.         }
  17.         
  18.         //打乱集合牌的顺序
  19.         
  20.         Collections.shuffle(cards);
  21.         
  22.         //3个人的手牌
  23.         
  24.         List<Integer> person1 = new ArrayList<Integer>();
  25.         
  26.         List<Integer> person2 = new ArrayList<Integer>();
  27.         
  28.         List<Integer> person3 = new ArrayList<Integer>();
  29.         
  30.         //底牌
  31.         
  32.         List<Integer> last = new ArrayList<Integer>();
  33.         
  34.         //依次发牌
  35.         
  36.         for(int i=0;i<51;i+=3){
  37.             
  38.             person1.add(cards.get(i));
  39.             
  40.             person2.add(cards.get(i+1));
  41.             
  42.             person3.add(cards.get(i+2));
  43.             
  44.         }
  45.         
  46.         //最后三张为底牌
  47.         
  48.         last.add(cards.get(51));
  49.         
  50.         last.add(cards.get(52));
  51.         
  52.         last.add(cards.get(53));
  53.         
  54.         System.out.println("第一个人的手牌:"+person1);
  55.         
  56.         System.out.println("第二个人的手牌:"+person2);
  57.         
  58.         System.out.println("第三个人的手牌:"+person3);
  59.         
  60.         System.out.println("底牌为:"+last);
  61.         
  62.     }
  63. }
复制代码
运行是这样的:
  1. 第一个人的手牌:[53, 51, 41, 21, 14, 29, 2, 19, 25, 46, 36, 40, 23, 17, 16, 32, 22]
  2. 第二个人的手牌:[50, 37, 15, 12, 0, 35, 3, 9, 49, 8, 20, 44, 26, 34, 48, 5, 38]
  3. 第三个人的手牌:[18, 10, 6, 24, 45, 43, 7, 11, 30, 47, 33, 28, 27, 52, 13, 1, 42]
  4. 底牌为:[4, 31, 39]
复制代码








欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2