GARANTIR DESCONTO

Fórum Numeros Aleatorios Sem Repetição #569244

09/04/2009

0

:oops: Estou tentando fazer um programa que gere numeros aleatorios para Mega Sena: Por exemplo: quero que ele gere 30 Cartelas. Ele tem que gerar 30 sequencia de 6 numeros entre 1 e 60. Até ai tudo bem. Fiz o Programa que gera tudo isto beleza, só que tem um detalhe, as vezes ele gera numero repedido. Ex: 02 - 10 - 20 - 32 - 32 - 45 Existe algum jeito de fazer com que não repita atravez de comando ou tenho que tratar isto na mão com algum código extenso?? Será que nestas 30 sequencias vai ter alguma que vai repetir?? Como eu trato isto?? Alguem pode me ajudar??? Desde já Agradeço!!!!!
Mlcneto

Mlcneto

Responder

Posts

09/04/2009

Vitor Pamplona

Sugiro fazer o seguinte... Ao fazer cada cartela, compare o número sorteado para ver se não está na cartela corrente. Após todas as cartelas geradas, compare todas elas para ver se não há cartelas iguais :!:
Responder

Gostei + 0

09/04/2009

Vitor Pamplona

Vc vai ter um vetor pra armazenar os numeros, ok ? inicie ele com todas as posicoes -1 para nao dar problema... ai voce gera um numero aleatorio e armazena... a partir do segundo que voce gerar, vc pega e varre o vetor inteiro vendo se ele ja esta la, se estiver, anule e gere outro, se nao estiver, BINGO, numero novo =P Tranquilo né? Não se esqueca do [color=red:f4219cf418]JavaFREE[/color:f4219cf418] se por fim, vc ganhar da Mega Sena hein! =P eheheheheh Abraços!
Responder

Gostei + 0

09/04/2009

Edinei Manica

Vc pode guardar os valores já sorteados em uma ArraList, e ir comparando se o número já saio !!!!!
Responder

Gostei + 0

09/04/2009

Vitor Pamplona

[quote="lucastex"]Vc vai ter um vetor pra armazenar os numeros, ok ? inicie ele com todas as posicoes -1 para nao dar problema... ai voce gera um numero aleatorio e armazena... a partir do segundo que voce gerar, vc pega e varre o vetor inteiro vendo se ele ja esta la, se estiver, anule e gere outro, se nao estiver, BINGO, numero novo =P Tranquilo né? Não se esqueca do [color=red:7280aaee67]JavaFREE[/color:7280aaee67] se por fim, vc ganhar da Mega Sena hein! =P eheheheheh Abraços!
Sendo assim dah para usar uma estrutura do tipo Map, evitando itens duplicados :) Aih nem precisa fazer a comparação :!:
Responder

Gostei + 0

09/04/2009

Mlcneto

Eu estou armazanando em um vetor Como seria essa estrutura MAP
Responder

Gostei + 0

09/04/2009

Vitor Pamplona

Map é uma estrutura de dados que trabalha com chaves (no caso o teu número sorteado). Caso vc tente incluir um item com a mesma chave que outro, ela substitui o valor deste item. Normalmente é usado quando vc sabe todas as chaves, mas para o teu caso pode servir. De uma olhada na API : http://java.sun.com/j2se/1.4.2/docs/api/index.html Construtor
HashMap map = new HashMap();
Adicionar na lista
map.put( número, número )
Retornar os valores (Usar Iterador)
Iterator i = map.keySet().iterator();
while (i.hasNext()) {
      numero = (String) i.next();
}
Responder

Gostei + 0

09/04/2009

Bruno Borges

Nao use Map pra isso.... eh besteira... pq? pq vc tah armazenando apenas um dado, e nao fazendo um par de Key-Value... sorteie os numeros, jogando pra dentro de um array primitivo... use o metodo binarySearch da classe Arrays para saber se um numero N sorteado jah nao consta no array... done. :!:
Responder

Gostei + 0

09/04/2009

Bruno Borges

Por que vc naum utiliza um Set??? Defina um tamanho para o campo e adicione seus dados até preencher com a quantidade...
Set valores = new HashSet();
while (valores.size() < 10) {
  int x = (int) (100 * Math.random());
  valores.add(new Integer(x));
}
Assim já utiliza o algoritmos do próprio Set e lembrando que o Set não permite repetição :!: :!: :!: :!: :!:
Responder

Gostei + 0

09/04/2009

Bruno Borges

nao creio q usar Set (HashSet) nesse caso venha a ter vantagens... :( axo q um int[] jah basta... bom, vai da escolha da solucao agora... :)
Responder

Gostei + 0

09/04/2009

Mlcneto

Amigos, valeu pela ajuda... Agora eu acho consegui fazer o negocio funcionar Só falta eu conseguir ganhar... Ou seja impossivel Alguem sabe algo sobre Clusters de Maqs. Linux??? Quero implementar bem este programa e coloca-lo pra rodar em um cluster ja que imagino que vai demorar muito se eu for gerar 20.000.000 de cartelas... Pra falar a verdade acho que eu nunca vou jogar, só quero fazer este programa por fazer e roda-lo em um cluster...
Responder

Gostei + 0

09/04/2009

Jean Rodrigues

[quote="mlcneto"] Alguem sabe algo sobre Clusters de Maqs. Linux???
http://www.clubedohardware.com.br Aqui vc encontra sobre clusters com máq. Linux :!:
Responder

Gostei + 0

16/06/2011

Rafael Manzini

[color=black][/color] FUNCIONAA!!!!!!!!!!!! public class Sorteador { /** * @author Rafael Tamaro Manzini */ public static void main(String[] args) { int [] myGame = new int[6]; int valor; int novovalor; int i; int z; for(i = 0; i <= 5; i++) { valor = (int) (1 + Math.random() * 60); //SORTEIA UM VALOR DE 1 A 60 myGame[i] = valor; //GUARDA ESSE VALOR NA PRIMEIRA POSIÇÃO DO ARRAY novovalor = (int) (1 + Math.random() * 60); for(z = 0; z <= 5; z++) { if(myGame[z] == novovalor) { novovalor = (int) (1 + Math.random() * 60); z=0; } } myGame[i] = novovalor; System.out.println("" + myGame[i]); } } } Pessoal basicamente fiz um looping gerando números randômicos, e dentro do outro looping verifico se o novo valor randômico esta dentro no nosso array, caso esteje, novo número é sorteado e o looping reseta, caso contrario não faz nada e ao sair do looping armazena o novo valor no nosso vetor, meu código esta porco pois imagine que algum sortudo rode o programa e sempre o novo valor já esteje dentro do array, neste caso entrariamos em looping infinito. Agora se alguem ganhar na mega-sena com meu programa, favor me enviar um email falando que pelo menos vou ganhar um carro novo (tipo um jaguar) e uma casa nova. =D
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar