Se os números não são sequenciais, ponha os números num vetor e sorteie os índices.
intnumeros[]=newint[]{10,5,11,22};Randomrandom=newRandom();intind=random.nextInt(numeros.length);System.out.println("O número sorteado foi:"+numeros[ind]):ind=random.nextInt(numeros.length);System.out.println("O número sorteado foi:"+numeros[ind]):ind=random.nextInt(numeros.length);System.out.println("O número sorteado foi:"+numeros[ind]):ind=random.nextInt(numeros.length);System.out.println("O número sorteado foi:"+numeros[ind]):
Acho que o método shuffle (que embaralha a lista inteira) é meio ineficiente se você só quer sortear um número.
sergiotaborda
ViniGodoy:
Se os números são sequenciais, ponha os números fora de sequencia num vetor e sorteie os índices.
Mas para por fora da sequencia já tem que fazer suffle. Claro que pode fazer na mão , mas no caso geral, teria.
Tomando a sua dica de eficiencia
classElector<T>{T[]elements;Randomrandom=newRandom();publicElector(T...elements){this.elements=elements;}// coloca fora de ordem sempre que necessáriopublicvoidsuffle(){List<T>list=newArrayList<T>(Arrays.asList(elements));Collections.suffle(list);list.toArray(elements);}publicTdraw(){returnelements[random.nextInt(elements.length)];}}
Assim se o programador já sabe que estão fora de ordem, não precisa de invocar shuffle. Em caso de duvida pode invocar shuffle.