1. 程式人生 > 其它 >Java 洗牌演算法

Java 洗牌演算法

技術標籤:javajava

  1. 設計一個撲克洗牌演算法。將 52 張牌(不包括大、小王)用物件的形式表示,每張牌包括花色和大小。大小按如下序號排列: 2 、 3 、 4 、 5 、 6 、 7 、 8 、 9 、 10 、 J 、 Q 、 K 、 A ,花色為:“黑桃”,“花子”,“紅桃”,“方片”,首先將撲克按順序存放到一個一維陣列中,然後按洗牌演算法進行洗牌,輸出洗完後的撲克牌序列。
    在這裡插入圖片描述
public class PuKe {
	String hua;
	String num;
	public PuKe() {
		//養成寫無參構造方法的習慣
	}
	public PuKe(String hua,
String num) { this.hua=hua; this.num=num; } public String toString() { return "["+hua+num+"]"; } public static void main(String[] args) { // TODO 自動生成的方法存根 String h[]= {"黑桃","花子","紅桃","方片"}; String n[]= {"2","3"
,"4","5","6","7","8","9","10","J","Q","K","A"}; PuKe p[]=new PuKe[52]; int c=0; for(int k=0;k<13;k++) { for(int j=0;j<4;j++) { p[c]=new PuKe(h[j],n[k]); /*p[c].hua=h[j];//不能通過此方法賦值,因為未賦值前為null p[c].num=n[k]; System.out.print(p[c]+"\n");*/
c++; } } //輸出賦值後的撲克 for(int k=0;k<p.length;k++) { System.out.print(p[k]+"\t"); if((k+1)%13==0)//k+1 System.out.println(); } //利用隨機交換進行洗牌 for(int k=0;k<p.length;k++) { int a=(int)(Math.random()*52);//0~51 if(!p[k].equals(p[a])){ PuKe temp=p[k]; p[k]=p[a]; p[a]=temp; } } //輸出洗牌後的撲克 System.out.println("--------輸出洗牌後的撲克--------"); for(int k=0;k<p.length;k++) { System.out.print(p[k]+"\t"); if((k+1)%13==0)//k+1 System.out.println(); } } }