Eai galera, to com o código feito mas não sei como fazer pra não repetir os resultados, se alguém puder me ajudar agradeço.
Crie um algoritmo, utilizando while ou for, que nos dê uma dica de 6 dezenas a serem jogadas na Megasena. Estas 6 dezenas devem ser sorteadas com valores entre 1 e 60. Não serão permitidas dezenas iguais em um mesmo jogo. Exemplo do resultado esperado:
04-08-15-16-23-42.
[code]import java.util.*;
public class exercicio05{
public static void main(String[] args) {
int n1=00;
int n2=00;
int n3=00;
int n4=00;
int n5=00;
int n6=00;
for (int x=1;x<=6;x++) {
int valorDado = (new Random().nextInt(60) + 1);
if (x==1){
n1=n1+valorDado;
} else if (x==2){
n2=n2+valorDado;
} else if (x==3){
n3=n3+valorDado;
} else if (x==4){
n4=n4+valorDado;
} else if (x==5){
n5=n5+valorDado;
} else if (x==6){
n6=n6+valorDado;
}
}
System.out.println("Os números sorteados foram " +n1+ " - " +n2+ " - " +n3+ " - " +n4+ " - " +n5+ " - " +n6);
}
}[/code]
Considerando que na prática as dezenas da mega-sena estão no intervalo [00,59], o algoritmo ficaria assim:
int [] dezenas = new int[60];
for(int i = 0 ; i < 60 ; i++)
dezenas[i] = i;
Random r = new Random();
for(int j = 0 ; j < 6 ; j++){
int aux = dezenas[j];
int k = j + r.nextInt(60 - j);
dezenas[j] = dezenas[k];
dezenas[k] = aux;
}
// e o seu jogo será as 6 primeiras dezenas do vetor
até hoje foi a única maneira que eu consegui encontrar para simular um sorteio sem reposição com um distribuição próxima da distribuição uniforme.
muito obrigado rmendes08, mas fiquei pensando se tem outra maneiro de fazer sem usar vetor, até porque o professor não avia mostrado vetores nessa aula desse exercício.
Sorteie 6 números de 0 até 10.
O número em questão será a soma do número sorteado com o anterior.
A distribuição disso não é uniforme, mas já atende o que você quer. Além disso, o resultado do processo sempre será uma lista ordenada.
Random random = new Random();
int n1=random.nextInt(10) + 1;
int n2=n1 + random.nextInt(10) + 1;
int n3=n2 + random.nextInt(10) + 1;
int n4=n3 + random.nextInt(10) + 1;
int n5=n4 + random.nextInt(10) + 1;
int n6=n5 + random.nextInt(10) + 1;
System.out.println("Os números sorteados foram " +n1+ " - " +n2+ " - " +n3+ " - " +n4+ " - " +n5+ " - " +n6);
Outra coisa. Jamais use o random dessa forma:
new Random().nextInt(60) + 1
A aleatoriedade é garantida usando o mesmo gerador sempre, não usando geradores diferentes.
Muito obrigado de novo ViniGodoy valeu mesmo.
Veja que fica bem simples com um for:
Random rnd = new Random();
int numero = 0;
System.out.println("Os números sorteados foram:");
for (int i = 0; i < 6; i++) {
numero += rnd.nextInt(10)+1;
System.out.print(numero + " ");
}
System.out.println();
O resultado sempre será em ordem crescente, tem alguma maneira de deixar embaralhado?