Como gerar numeros aleatorios

20 respostas
B

ae galera
estou tentando fazer um gerador de cpf
mas nao sei como gerar numeros aleatorios :?: :?: :?:

20 Respostas

guisantogui

Gerar digito por digito ou todos eles de uma vez?

Procure pela classe Random

rodrigo.bossini

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.

B

vlw pelas dicas
vo pesquisar e se conseguir no posta aki o
codigo fonte :shock:

rdmardegam
Random rnd = new Random();
int numeroGerado = rnd.nextInt(10);// Gerando numero de 0 -9
DHS

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

rodrigo.bossini

beto11:
vlw pelas dicas
vo pesquisar e se conseguir no posta aki o
codigo fonte :shock:

Só mais uma dica: “linguagem” se escreve com N, não M. (M só antes de P e B).

B

vlw galera
rod.attack vlw pela dica de portuges
eu so pessimo :smiley: :smiley: :smiley: :smiley:

D
como CPF são 11 digitos, eu faria assim:
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]);
}

vlw

rodrigo.bossini
Dami? Cunha:
como CPF são 11 digitos, eu faria assim:
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]);
}

vlw

A probabilidade de gerar um cpf válido com o seu algoritmo é praticamente nula.

D

vc n qer que gere uma sequencia com 11 digitos???
intao…o q seria o válido pra vc???
vlw

juliofsn

Dami? Cunha:
vc n qer que gere uma sequencia com 11 digitos???
intao…o q seria o válido pra vc???
vlw

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.

E

Para gerar um número de CPF válido, simplesmente crie um número de 9 dígitos (ou seja, nextInt ([telefone removido])), e calcule os outros 2 dígitos verificadores, pondo-os nas posições adequadas. Nada mais simples.

C_Lucas

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.

D

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

C_Lucas

Isso só que falta calcular o ultimo número :smiley: :smiley: :smiley: :!:

D

Não, ele já está calculando todos os 11 digitos…

C_Lucas

Malz não prestei a devida atenção no código tem até um comentario, malz mesmo.

D

OK, + já resolveu seu problema?? se sim, coloque como RESOLVIDO lá no tópico…
vlw

C_Lucas

Não fui eu que abri o tópico só comentei como calcular um cpf valido hehehehe :lol: :lol: :lol:

D

OPS…foi mal…é pq qem tava debatendo era só a gnt, ai pensei q tivesse sido vc…+ vi agora…kkk
vlw

Criado 14 de junho de 2010
Ultima resposta 16 de jun. de 2010
Respostas 20
Participantes 9