Ir para o conteúdo
ricardoneves93

Totoloto

Mensagens Recomendadas

ricardoneves93

Estou a criar um programa simples para gerar uma aposta de totoloto, ou a minha ideia é gerar um array usando a classe Random do java com 6 elementos que podem variar de 1 a 49. O meu problema está a ser garantir que estes não se repetem, eu faço uma primeira verificação com dois ciclos for em simultâneo, porem imaginemos o seguinte array {1,2,2,3,4,6,} ao verificar com os ciclos vai-me encontrar os 2 repetidos e para o segundo 2 vai ser feita a função random até que este seja diferente de 2, mas o problema é que nada o impede que seja igual a 1, nesse caso não consigo lidar com este bug. Alguém me pode dar uma dica? Junto mando o meu codigo.

import java.util.Arrays;
import java.util.Random;
public class Apostas {
private static final int TAMANHO_APOSTA = 6;
private static final int NUM_MAXIMO = 49;
int[] nums = new int[TAMANHO_APOSTA];
Random r = new Random();
public Apostas() {
geraAposta();
}
public void geraAposta() {
for (int i = 0; i < TAMANHO_APOSTA; i++) {
nums[i] = r.nextInt(NUM_MAXIMO) + 1;
}
}
public void mostraAposta() {
for (int i = 0; i < nums.length; i++)
System.out.println(nums[i]);
}
public void verificaAposta() {
for (int i = 0; i < TAMANHO_APOSTA - 1; i++) {
for (int j = i + 1; j < TAMANHO_APOSTA; j++) {
do
if (nums[i] == nums[j])
nums[j] = r.nextInt(NUM_MAXIMO) + 1;
while (nums[i] == nums[j]);
}
}
}

public void sort(){
Arrays.sort(nums);
}
}

Editado por ricardoneves93

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

A maneira canonica é meteres num array todos os valores possiveis, baralhar o array, e seleccionar o numero de elementos que precisas.


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ricardoneves93

A maneira canonica é meteres num array todos os valores possiveis, baralhar o array, e seleccionar o numero de elementos que precisas.

É uma boa ideia, não tinha pensado nisso, é um processo muito mais simples.

Obrigado

Só uma questão existe alguma função do java que faça isso automáticamente, é que só estou a encontrar para fazer shuffle a listas.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Funcao do Java que faça isso automaticamente, nao sei (nunca escrevi uma linha de codigo Java).

Mas certamente nao e dificil escrever uma implementacao do "Knuth shuffle".

Editado por pmg

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ricardoneves93

Funcao do Java que faça isso automaticamente, nao sei (nunca escrevi uma linha de codigo Java).

Mas certamente nao e dificil escrever uma implementacao do "Knuth shuffle".

Já consegui implementar um shuffle, depois basta retirar por exemplo os 1os 6 e já está.

Mais uma vez obrigado a todos ;)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

agora que já descobriste, fica aqui a solução:

Integer[] nums = { 1,  2,  3,  4,  5,  6,  7,  8,  9,
	  10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
	  20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
	  30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
	  40, 41, 42, 43, 44, 45, 46, 47, 48, 49};

List<Integer> list = Arrays.asList(nums);
Collections.shuffle(list);

// usar os primeiros 6 números da lista "list"


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.