派发牌算法的实现 (java)


import java.util.*;

/** 
* 派发牌算法的实现 
* 要求:把2副牌,也就是108张,发给4个人,留8张底牌 
*/


public class PaiPai {
    
    
int[]    pokerpai = new int[54];
    
int[]      allpai = new int[108];
    
int[][] playerpai = new int[4][25];
    
int[]       dipai = new int[8]; 
    
int m_turn;
    
    Random rdm 
= new Random(System.currentTimeMillis());

    
int getRandom(int size)
    
{
        
return (rdm.nextInt() & 0x7FFFFFFF% size;
    }

    
    
public PaiPai()
    
{
        initPai();
        faPai();
    }

    
    
public void initPai()
    
{
        m_turn
=0;
        
int randomsite;
        
int temppai;
        
//赋初值--发牌一般形式:1.按点数发  2.牌数和花色发
        
//下面是按点数发
        for(int i=0;i<pokerpai.length;i++)
        
{
            pokerpai[i]
=(i+1)%55;
        }

        
//给两副牌
        for(int i=0;i<2;i++)
           
for(int j=0;j<pokerpai.length;j++)
           
{
               allpai[m_turn]
=pokerpai[j];
               m_turn
++;
           }

        
//洗牌
        for(int i=0;i<allpai.length;i++)
        
{
            randomsite
=getRandom(allpai.length);
            temppai
=allpai[randomsite];
            allpai[randomsite]
=allpai[i];
            allpai[i]
=temppai;
            
        }

    }

    
    
    
public void faPai()
    
{
        
//一轮发四人牌,共25轮
        for(int i=0;i<25;i++)
           
for(int j=0;j<playerpai.length;j++)
           
{
               m_turn
--;
               playerpai[j][i]
=allpai[m_turn];
           }

        
//留底牌
        for(int i=0;i<dipai.length;i++)
        
{
            m_turn
--;
            dipai[i]
=allpai[m_turn];
            
        }

        
//显示四家牌
        for(int j=0;j<playerpai.length;j++)
               showPai(playerpai[j]);
        
//显示底牌
        showPai(dipai);
    }

    
    
public void showPai(int[] m_pai)
    
{
        System.out.println(
"Showpai:start.");
        
for(int i=0;i<m_pai.length;i++)
        
{
            System.out.print(
" "+m_pai[i]);
        }

        System.out.println();
        System.out.println(
"Showpai:end.");
    }

    
    
public static void main(String[] args)
    
{
        
new PaiPai();
    }


}

原文地址:https://www.cnblogs.com/bluespot/p/911755.html