1。的描述如下:
   // 产生牌的随机序列
 int iContainer[54];
 for(int iCount = 0 ;iCount < 54 ;iCount++)
 {
   Random r = new Random();
   int iTmp = r.nextInt()%54 ;
   for(int iCount2 = 0 ;iCount2 < 54; iCount2++)
   {
     int iPos = (iTmp+iCount2)%54;
     if (iContainer[iPos] != 0) 
     {
       iContainer[iPos] = iCount + 1; 
       break;
     }
   }
 }//甲乙按照顺序抽派就行了2.的描述 
// 产生顺序的牌
 int iContainer[54];
 for(int iCount = 0 ;iCount < 54 ;iCount++)
 {
   iContaniner[iCount] = iCount + 1;
 }//抽牌5张牌的代码
  for(int iCount = 0;iCount <5 ;iCount ++)
  {
     Random r = new Random();
     int iTmp = r.nextInt()%54 ;     for(int iCount2 = 0 ;iCount2 < 54 ;iCount2++)
     {
       int iPos = (iTmp+iCount2)%2;
       if (iContaniner[iPos] != 0)
        {
          //coding to fetch it by youself
          iContaniner[iPos] = 0 ;
          break;                   
         }
     }
  
  }

解决方案 »

  1.   

    将54张牌分别用0--53表示放入一个Vector中
    然后生成一个随机数r(0-1)
    取出一张就remove()一张
    r乘(53-i)之后得到的数四舍五入就可以得到一张牌,i为你取牌的次数
      

  2.   

    下面的仅供参考:
    定义一个Object代表每张扑克牌,它有value(值,如3),color(花色,如方片) 2个属性。然后定义一个长度为52的ArrayList,用来存储52张扑克牌。用Object来填充。然后再定义4个长度为13的ArrayList用来存储每个人将要发到的牌。做一个13*4的循环随机从上面长度为52的ArrayList中抽取牌填入长度为13的ArrayList。填充完毕,依次遍历每个长度为13的ArrayList,打印出Object的值和花色。
    http://expert.csdn.net/Expert/topic/2706/2706101.xml?temp=.8718378