Ir ao conteúdo

Ajuda com gerador de numeros distintos


LuHHBR

Posts recomendados

Postado

Ola, gostaria de uma ajuda

preciso entregar hj esse trabalho :D

preciso fazer um gerador de numeros da megasena

mas eles nao podem se repetir

até agora fiz isso:

for(i=0;i<6;i++)

{

numero = (int)(1 + Math.random()*60);

}

for(i=0;i<5;i++)

{

for(j=1;j<6;j++)

{

if(numero == numero[j]){

numero = (int)(1 + Math.random()*60);

}

}

}

jTextField1.setText(String.valueOf(numero[0]));

jTextField2.setText(String.valueOf(numero[1]));

jTextField3.setText(String.valueOf(numero[2]));

jTextField4.setText(String.valueOf(numero[3]));

jTextField5.setText(String.valueOf(numero[4]));

jTextField6.setText(String.valueOf(numero[5]));

ele repete um numero de vez em quando.

o que esta errado ?

estou tentando depois que ele troca o numero igual q encontrou, voltar a varrer o vetor, mas nao estou conseguindo.

Obrigado desde ja.

Postado

Ola LuHHBR,

por que você não tenta por o programa pra varrer o vetor a cada número gerado?

Lembre-se que um vetor de inteiros em Java é iniciado com o valor 0 em todas as posições, isso significa que você pode varrer o vetor até encontrar um número repetido, ou até encontrar um 0 para sair do laço.

Eu posso estar enganado, mas verifique se o seu programa não gera o número 61 também... Isso não estaria de acordo com a Mega Sena :P

Abraços,

Thiago.

Postado

Sim, claro que ele repete, pois...


if(numero[i] == numero[j]){
numero[i] = (int)(1 + Math.random()*60);

...se o numero for igual ao numero[j], você cria um novo numero, que apesar de ser diferente do numero j, pode muito bem ser igual a algum outro numero já "sorteado".

O ideal seria que, após cada número randomico gerado, você verifacasse se ele é diferente de todos os numeros q já foram sorteados. E isso é bem simples de se fazer...basta compará-lo com todos os números gerados que já foram colocados no seu "vetor final".

Postado

for(i=0;i<6;i++)

{

numero = (int)(1 + Math.random()*60);

}

coloque assim:

for(i=0;i<6;i++)

{

numero = (int)(1 + Math.random()*60);

for(j=0;j<i,j++){

if(numero == numero[j]){

i = i -1;

}

}

}

coloca isso que vai funcionar...

e claro apaga essa parte depois

for(i=0;i<5;i++)

{

for(j=1;j<6;j++)

{

if(numero == numero[j]){

numero = (int)(1 + Math.random()*60);

}

}

}

Postado
opa, que bom que fui util... porém nõ adianta só copiar esse exercicio...

tem que entender o que eu fiz...qualquer duvida sobre o que eu fiz posta aqui...

claro..eu entendi sim, o meu erro era q dps q ele trocava o numero, ele varria o vetor novamente, mas ele varria o vetor inteiro! eahueahuaehea

então ele sempre achava um numero igual...ele mesmo.

e entrava em looping infinito xD

Postado
claro..eu entendi sim, o meu erro era q dps q ele trocava o numero, ele varria o vetor novamente, mas ele varria o vetor inteiro! eahueahuaehea

então ele sempre achava um numero igual...ele mesmo.

e entrava em looping infinito xD

oskaoskaoksa... acontece sempre =]

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!