[color=darkred][/color]Galera este é o algoritimo masi correto pra gerar jogos da mega sena sem repetição, porem tem um unico problema, se o cara for muito sortudo e o penultimo numero do vetor da ultima linha da coleção for 60 pode ocorrer o risco de o ultimo ser 60… fui galera este ai ja era
import javax.swing.*;
public class MegaSena{
int vetor[];
int jogos[][];
int n;
int num;
//Construtor
public MegaSena()
{
vetor = new int [6];
jogos= new int [10][6];
}
//Lendo o número de jogos
public void carregaJogo()
{
num = Integer.parseInt(JOptionPane.showInputDialog(“Entre com nr de jogos maximo 10”));
if(num > 10)
{
num = Integer.parseInt(JOptionPane.showInputDialog(“Numero maximo de jogos são 10”));
}
for(int col =0;col<num;col++)
{
vetor = GeraJogo();
for(int lin=0; lin<6; lin++)
{
jogos[col][lin]= vetor[lin];
}
}
n=num;
}
//Organizando os números
public int[] bubbleSort(int vetor[])
{
boolean houve_troca=true;
uma forma facil de gerar número sem reposição, é usando Collection(lists, sets, collections etc) para os possiveis resultados e usando remove a cada sortei…
fiz aqui uma pequena classe Urna, para exemplificar
public class Urna {
private final List conteudo;
private final Random sorteio = new Random();
public Urna(List<T> conteudo) {
this.conteudo = new ArrayList<T>(conteudo.size());
this.conteudo.addAll(conteudo);
}
public T sortear() {
if (conteudo.size() <= 0)
throw new RuntimeException("Não há mais itens na urna");
Collections.shuffle(conteudo); //simula uma balançada na urna ^^ (embaralha os valores)
return conteudo.remove(proximoItem()); //retira um item aleatoria da runa
}
public List<T> sortear(int numeroDeBolas) {
List<T> resultado = new ArrayList<T>(numeroDeBolas);
for (int i = 0; i< numeroDeBolas; i++)
resultado.add(sortear());
return resultado;
}
/**
* Escolhe um item da urna, aleatoriamente
* @return index de um item aleatorio contido na urna
*/
private int proximoItem() {
return sorteio.nextInt(conteudo.size());
}
}[/code]
[code]public class UrnaNumerica extends Urna {
private static List<Integer> gerarConteudo(int size) {
List<Integer> bolinhas = new ArrayList<Integer>(size);
for (int i = 1; i<=size;i++)
bolinhas.add(i);
return bolinhas;
}
public UrnaNumerica(List<Integer> conteudo) {
super(conteudo);
}
public UrnaNumerica(int size) {
this(gerarConteudo(size));
}
}[/code]
ai vc pode usar a urna como quiser… um exemplo segue abaixo
[code]public class MegaSena {
public static List resultado() {
UrnaNumerica urna = new UrnaNumerica(60);
return resultado(urna);
}
public static List<Integer> resultado(UrnaNumerica urna) {
Integer[] result = new Integer[6];
for (int i = 0; i < 6; i++)
result[i] = urna.sortear();
return Arrays.asList(result);
}
public static boolean confereResultado(List<Integer> resultado, List<Integer> seuJogo) {
boolean acertou = true;
for (Integer bola : resultado) {
acertou = seuJogo.contains(bola);
if (!acertou)
break;
}
return acertou;
}
public static void main(String ... args) {
Urna urna = new UrnaNumerica(60);
System.out.print("Sortei de teste :");
for (int i = 0; i<6; i++)
System.out.print(urna.sortear() + " ");
System.out.println("");
//vc tb pode sortear assim um resultado
List<Integer> resultados = MegaSena.resultado();
System.out.print("Sortei da Mega Senha :");
for (Integer r : resultados)
System.out.print(r + " ");
System.out.println("");
//pode tb fazer um jogo e conferir se ganhou
List<Integer> jogo = new ArrayList<Integer>(6);
jogo.add(12); jogo.add(9); jogo.add(3); jogo.add(45); jogo.add(27); jogo.add(34);
if (MegaSena.confereResultado(resultados, jogo))
System.out.println("Vc ganhou");
else
System.out.println("Vc perdeu");
}
}[/code]
da pra depois incluir método de quadra, quina … e o que vc kizer… sortear usando Remove em uma lista, pra mim, é a melhor forma de garantir um sortei sem reposição