Lógica para selecionar posição aleatória em Array de Strings

4 respostas
DoomGuy

Eu dei uma pesquisada na intertnet e não encontrei algo que servisse muito ao que eu procurava. Alguém sabe como fazer um algoritmo que, dado um array, seja selecionado uma posição aleatória??

algo do tipo:

String[] teste = {"pos1","pos2","pos3","pos4","pos5","pos6"};
System.out.println(teste[(int)Math.random()*10]);

No caso acima, o Math.random() devolverá um valor entre 0 a 9, porém, o tamanho do array é 6. Como fazer um algortimo que “sorteie” uma das posições, sem que estoure o tamanho do array??

Obrigado.

4 Respostas

Frantic_Avenger

DoomGuy:
Eu dei uma pesquisada na intertnet e não encontrei algo que servisse muito ao que eu procurava. Alguém sabe como fazer um algoritmo que, dado um array, seja selecionado uma posição aleatória??

algo do tipo:

String[] teste = {"pos1","pos2","pos3","pos4","pos5","pos6"};
System.out.println(teste[(int)Math.random()*10]);

No caso acima, o Math.random() devolverá um valor entre 0 a 9, porém, o tamanho do array é 6. Como fazer um algortimo que “sorteie” uma das posições, sem que estoure o tamanho do array??

Obrigado.

Troca o 10 por 6 ou por teste.length

DoomGuy

Eu já testei o caso acima com a fórmula do tipo : teste.lenght() pra que o método em questão receba um array de qualquer tamanho. Porém, vez e outra ainda o infeliz estora.

rmendes08
import java.util.Random;

//...

Random r = new Random();

String [] arr = {"1", "2", "3", "4"};

int index = r.nextInt(0, arr.length);

System.out.println(arr[index]);
Frantic_Avenger

O length não usa parenteses, talvez seja este o erro quando você o utiliza, porém é só usar a opção rmendes08.
Flw.

Criado 27 de fevereiro de 2012
Ultima resposta 27 de fev. de 2012
Respostas 4
Participantes 3