Sto realizzando una banale applicazione per prendere dimestichezza con Java, tuttavia nonostante compili senza errori quando la eseguo mi restituisce un errore. Lo scopo del programma è quello di creare un mazzo di carte, stamparlo e mescolarlo...

Questo è il codice che è composto da tre classi: Carta, Mazzo e Test.
codice:
//Carta.java
public class Carta{
	private String seme;
	private String valore;
	
	//costruttori
	public Carta(){
		seme = "?";
		valore = "?";
	}	
	public Carta(String semeCarta, String valoreCarta){
		seme = semeCarta;
		valore = valoreCarta;
	}
	
	//metodi set/get
	public String getSeme() {return seme;}
	public String getValore() {return valore;}
	
	//metodi stampa
	public void stampa(){
		System.out.print(valore + " di " + seme);
	}
	public void stampaln(){
		System.out.println(valore + " di " + seme);
	}
}
codice:
//Mazzo.java
public class Mazzo{
	final int NUMERO_CARTE = 52;
	private Carta[] mazzo;
	
	//costruttori
	public Mazzo(){
		String[] seme = {"Cuori", "Mattoni", "Picche", "Fiori"};
		String[] valore = {"Asso", "Due", "Tre", "Quattro", "Cinque", 
						   "Sei", "Sette", "Otto", "Nove", "Dieci",
						   "Jack", "Donna", "Regio"};
		
		mazzo = new Carta[NUMERO_CARTE];
		for(int i=0; i<NUMERO_CARTE; i++)
			mazzo[i] = new Carta(seme[i%13], valore[i/13]);
	}

	//metodi stampa
	public void stampa(){
		System.out.println("Mazzo di carte:");
		for(int i=0; i<NUMERO_CARTE; i++)
			mazzo[i].stampaln();
	}		
}
codice:
//Test.java
public class test{
	public static void main(String[] Args){
		Mazzo mazzoCarte = new Mazzo();
		mazzoCarte.stampa();
	}
}
L'errore che mi restituisce in fase di esecuzione è il seguente:
codice:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
	at Mazzo.<init>(Mazzo.java:14)
	at test.main(Test.java:3)
Grazie in anticipo per l'aiuto.