Ir para o conteúdo
Tim§id€

Random Java

Mensagens Recomendadas

Tim§id€

Boas,

eu queria fazer um random de 1 a 6, até ai tudo bem

mas eu queria voltar a fazer um random mas excluir o numero que tinha saído antes!

Será que existe algum método que de para fazer?

ou terei de fazer por ciclos verificar se o que sai agora e diferente do anterior?

Obrigado.


...º(>_<)º...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

só com ciclo, não existe nenhum método na API do Java que te retorne um número de x a y excluindo o z.

o que deverás fazer é tu uma função com esse protótipo

int random(int min, int max, int exclude[])
{
 // o teu código
}


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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Tim§id€

só com ciclo, não existe nenhum método na API do Java que te retorne um número de x a y excluindo o z.

o que deverás fazer é tu uma função com esse protótipo

int random(int min, int max, int exclude[])
{
 // o teu código
}

Boas,

HappyHippyHippo ainda tinha alguma esperança que existisse, mas obrigado pelo ajuda. :thumbsup:


...º(>_<)º...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Tim§id€

Boas pessoal,

podia-me dar uma ideia de como fazer o seguinte, tenho um random que da cidades aleatórios

mas ele só pode dar cidades diferentes não pode voltar a dar o mesmo

exemplo;

lisboa

paris

londres

exemplo que não pode sair

lisboa

londres

londres

lisboa

int[] cidade = new int[5];
 int nCidadesEscolhido = -1;
 Random aleatorio = new Random();
 int escolherNumeroDePercursos;
 int escolherCidadeAleatorio = 0;
 int cont = 0;
 int[] cidadeQueNaoPodeRepetir = new int[6];
//###-codigo que da o numero aleatorio de cidades
 do {
	 escolherNumeroDePercursos = aleatorio.nextInt(6) + 1;
 } while (escolherNumeroDePercursos == 1);
 System.out.println("Numero de Cidades escolhidas→ " + escolherNumeroDePercursos);
//###-acaba o codigo que da o numero aleatorio de cidades
//###-codigo para dar cidades aleatorio
 for (int i = 0; i < escolherNumeroDePercursos; i++) {
	 cont++;
	 escolherCidadeAleatorio = aleatorio.nextInt(6);
	 cidadeQueNaoPodeRepetir[i] = escolherCidadeAleatorio;
	 System.out.println("Cidade escolhida em "+cont+"º lugar, nna posicao original do Array " + escolherCidadeAleatorio);
 }
//##-acaba codigo que da cidades aleatorio

já tentei fazer um do while e if, se o escolher==naoEScolher

não estou a conseguir

Obrigado!


...º(>_<)º...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

é impossível perceber certo tipo de informação necessária para a resolução do problema através do teu código:

- onde tens a informação das cidades guardada ?

- qual o modelo/estrutura usada para guardar a informação das cidades ?

- qual o modelo/estrutura usada para guardar as cidades ?

- porque raio estás a escolher um caminho com um número aleatório de cidades ?


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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Tim§id€

é impossível perceber certo tipo de informação necessária para a resolução do problema através do teu código:

- onde tens a informação das cidades guardada ?

- qual o modelo/estrutura usada para guardar a informação das cidades ?

- qual o modelo/estrutura usada para guardar as cidades ?

- porque raio estás a escolher um caminho com um número aleatório de cidades ?

- onde tens a informação das cidades guardada ?

as cidades estão num Enum cidades

- qual o modelo/estrutura usada para guardar a informação das cidades ?

as cidades já estão guardadas num Enum acima mencionado

- porque raio estás a escolher um caminho com um número aleatório de cidades ?

isso é apenas um teste para depois saber

cidade 0-corresponde a uma cidade

cidade 1- também etc.

porque eu tenho uma array bidimensional com a distancia entre cidades 6*6

por isso estava a usar cidade 0

cidade 1 etc...


...º(>_<)º...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
AJBM

Boas!

Uma possível solução para resolver o teu problema é ter pelo menos 2 arrays um com os nomes das cidades e outro com os valores que já saíram.

E associas o índice do array com o nome das cidades ao valor aleatório.

Editado por AJBM

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

existe um método mais simples

- criar um array com o tamanho igual ao número de elementos que tens (domínio)

- popular o array com os índices dos elementos (neste caso será o valor do enum pois é um número)

- baralhar o array como entenderes, mas o melhor seria aplicares o seguinte : http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle

- escolher os N primeiros elementos do array que pretenderes

Editado por HappyHippyHippo

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Tim§id€

existe um método mais simples

- criar um array com o tamanho igual ao número de elementos que tens (domínio)

- popular o array com os índices dos elementos (neste caso será o valor do enum pois é um número)

- baralhar o array como entenderes, mas o melhor seria aplicares o seguinte : http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle

- escolher os N primeiros elementos do array que pretenderes

Obrigado pela ajuda, vou tentar ver se consigo :thumbsup:


...º(>_<)º...

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.