ae galera
estou tentando fazer um gerador de cpf
mas nao sei como gerar numeros aleatorios :?: :?: :?:
Gerar digito por digito ou todos eles de uma vez?
Procure pela classe Random
Dá pra gerar cpf’s válidos. Este é o algoritmo, a parte difícil. A parte fácil é gerar números randômicos em java. Uma procura rápida no google vai provavelmente trazer resultados como as Classes Random e Math.
vlw pelas dicas
vo pesquisar e se conseguir no posta aki o
codigo fonte :shock:
Random rnd = new Random();
int numeroGerado = rnd.nextInt(10);// Gerando numero de 0 -9
Ou
…
int numero = Math.random()*10;
O número que retornará é de 0 a 1 então para obter de 0 a 10 por exemplo multiplique por 10 e pegue a parte inteira
[quote=beto11]vlw pelas dicas
vo pesquisar e se conseguir no posta aki o
codigo fonte :shock:[/quote]
Só mais uma dica: “linguagem” se escreve com N, não M. (M só antes de P e B).
vlw galera
rod.attack vlw pela dica de portuges
eu so pessimo
como CPF são 11 digitos, eu faria assim:
[code]
public void gerarCpf()
{
int[] vet = new int[11];
Random aleatorio = new Random();
for(int i = 0;i <11; i++)
vet[i] = aleatorio.nextInt(9);
System.out.print("CPF: ");
for(int i = 0;i <11; i++)
System.out.print(vet[i]);
}[/code]
vlw
[quote=Dami? Cunha] como CPF são 11 digitos, eu faria assim:
[code]
public void gerarCpf()
{
int[] vet = new int[11];
Random aleatorio = new Random();
for(int i = 0;i <11; i++)
vet[i] = aleatorio.nextInt(9);
System.out.print("CPF: ");
for(int i = 0;i <11; i++)
System.out.print(vet[i]);
}[/code]
vlw[/quote]
A probabilidade de gerar um cpf válido com o seu algoritmo é praticamente nula.
vc n qer que gere uma sequencia com 11 digitos???
intao…o q seria o válido pra vc???
vlw
[quote=Dami? Cunha]vc n qer que gere uma sequencia com 11 digitos???
intao…o q seria o válido pra vc???
vlw[/quote]
Os dois últimos dígitos do CPF são dígitos verificadores, que são gerados de acordo com um certo algoritmo dependendo dos números que vêm antes.
Portando não dá simplesmente pra chutar 11 dígitos. Qualquer algoritmo de validação de CPF rejeitaria um número gerado desse seu jeito.
Para gerar um número de CPF válido, simplesmente crie um número de 9 dígitos (ou seja, nextInt (1000000000)), e calcule os outros 2 dígitos verificadores, pondo-os nas posições adequadas. Nada mais simples.
Bom lendo a algum tempo um livro de matemática vi uma curiosidade: Como é feito a verificação de um cpf. No caso como nosso amigo disse o cpf tem seus dois últimos dígitos como verificadores de um cpf válido. A forma que vi e testei é a seguinte: Multiplica-se o primeiro número por dez, o segundo por nove e assim sucessivamente até o antepenúltimo número que será multiplicado por dois, some o resultado e divida por 11 se o resultado der um resto menor que dois o penúltimo digito é zero(xxx.xxx.xxx.0x) senão faça 11- resto e terá o número valido exemplo(xxx.xxx.xxx."resto"x).Para se obter u ultimo digito a operação é quase a mesma agora comece a mutiplicar por onze o primeiro número o segundo por dez e assim sucessivamente até o penultimo número (que foi descoberto no calculo da divisão e subtraindo o resto pelo divisor), some o resultado e divida por onze e aplique mesmo critério: resto> que dois = 11 - menos o resto ou resto < que 2 = ultimo número do cpf.
Bom dessa forma ja tem um algoritmo para montar e criar um cpf válido.
hum…
agora sim entendi, a questão é que eu não sabia que os digitos verificadores era obtido atraves de calculos… dei uma olhadinha como se calcula, e fiz o seguinte código…
import java.util.Random;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author Damiao
*/
public class CPF
{
public static void main(String args [])
{
int[] vet = new int[11];
int[] vet2 = new int[11];
int multPrimeiroDV = 10,multSegundoDv = 11,soma=0, soma2 =0;;
Random aleatorio = new Random();
for(int i = 0;i <9; i++)
vet[i] = aleatorio.nextInt(9);
//Para calcular o primeiro digito verificador
for(int i =0; i<9;i++)
{
vet2[i]= vet[i]* multPrimeiroDV;
multPrimeiroDV--;
}
for(int i =0; i<9;i++)
{
soma += vet2[i];
}
int resto = soma % 11;
if(resto < 2)
vet[9] = 0;
else
vet[9] = 11 - resto;
//para calcular o segundo digito verificador
for(int i =0; i<10;i++)
{
vet2[i]= vet[i]* multSegundoDv;
multSegundoDv--;
}
for(int i =0; i<10;i++)
{
soma2 += vet2[i];
}
int resto2 = soma2 % 11;
if(resto < 2)
vet[10] = 0;
else
vet[10] = 11 - resto2;
System.out.print("CPF VÁLIDO: ");
for(int i = 0;i <vet.length; i++)
System.out.print(vet[i]);
}
}
tá de forma estruturada apenas que tava seguindo os calculos, + se não preferir é só ajeitar de acordo com seu sistema…
pelo menos agora sim entendi o q é um cpf válido…rsrsrs
vlw
Isso só que falta calcular o ultimo número
:!:
Não, ele já está calculando todos os 11 digitos…
Malz não prestei a devida atenção no código tem até um comentario, malz mesmo.
OK, + já resolveu seu problema?? se sim, coloque como RESOLVIDO lá no tópico…
vlw
Não fui eu que abri o tópico só comentei como calcular um cpf valido hehehehe :lol: :lol: :lol: