Jump to content
Sign in to follow this  
Tim§id€

Random Java

Recommended Posts

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.


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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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:


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

Share this post


Link to post
Share on other 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!


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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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...


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

Share this post


Link to post
Share on other 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.

Edited by AJBM

Share this post


Link to post
Share on other 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

Edited by HappyHippyHippo

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

Share this post


Link to post
Share on other 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:


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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.