Geração de CPFs válidos. Apenas o primeiro é válido :S

Fala feras :smiley:

Criei um método para gerar uma lista de registros de CPFs e apenas o primeiro número gerado é válido. A idéia, era a pessoa digitar uma quantidade de registros que ela quer gerar e isso ser gerado automaticamente, mas apenas o primeiro registro gerado é válido. Alguém pode me dar uma força pra ver onde eu estou errando?

	public String[] gerarCPF(int quantidade){
		
		long semente = 1234567890;
		Random random = new Random(semente);
		
		StringBuilder builder = null;
		
		int[] cpf = new int[11];		
		
		String vetor[] = new String[65535];
		
		for(int i=0; i<quantidade; i++){
			
			String valor = new String(new Integer(random.nextInt(999999999)).toString());
			builder = new StringBuilder(valor);
			while(builder.length() < 9){
				builder.append("0");
			}
			char[] cpfChar = builder.toString().toCharArray();
			
			for(int j=0; j<cpfChar.length; j++){
				String s = String.valueOf(cpfChar[j]);
				cpf[j] = Integer.parseInt(s);
			}
			
			vetor[i] = this.gerarCPF(cpf);
		}
		return vetor;
	}
	
	
	private String gerarCPF(int[] cpf){
		StringBuilder sb = new StringBuilder();
		
		this.calcularDigito(cpf, 10);
		this.calcularDigito(cpf, 11);
		
		for(int i=0; i<cpf.length; i++){
			sb.append(cpf[i]);
			if(i == 2 || i == 5){
				sb.append(".");
			}
			if(i==8){
				sb.append("-");
			}
		}

		return sb.toString();
	}
	
	private void calcularDigito(int[] cpf, int multiplicacao){
		int soma = 0;
		int posicaoArray = multiplicacao;
		int restoDivisao = 0;
		for(int j=0; j<cpf.length; j++){
			soma += cpf[j] * multiplicacao;
			multiplicacao--;
		}
		restoDivisao = soma % 11;
		if(restoDivisao < 2){
			cpf[posicaoArray-1] = 0;
		} else {
			cpf[posicaoArray-1] = 11 - restoDivisao;
		}
	}