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/archive/2007/09/30/911755.html