Randomizar certos números

Daí galera.
Precisava randomizar os números 0, 2 e 4.
Existe alguma maneira de sortear qualquer um desses 3 números sem precisar fazer a verificação se são pares?

Eu tava randomizando assim:

gerarAleatorio.nextInt(5);

Aí fazia a verificação se eles era pares, mas eu queria algo mais direto.

Alguém sabe como?

Valeu galera! Abraço!

o metodo random(),ele gera numeros aleatorios de 0.1 ate 1.0 nao incluso, roda ele multiplicando por 100 e da um casting por Integer,e depois usa %,entendeu ?

0 = 0 x 2
2 = 1 x 2
4 = 2 x 2

Então você precisa gerar um número aleatório de 0 a 2, e multiplicá-lo por 2. (Parece coisa de teste psicotécnico, não?)
Para gerar, use nextInt (3) (que gera de 0 até 2).

Desisto de tenta posta sempre da erro e quando vejo foi 10 post…

Mesmo que o de cima…

com o Random assim como você usa você pode verificar
se i % 2 == 0 continua se não sorteia denovo

dai você pode fazer assim

Random r = new Random();
int i = 0;
do{
i = r.nextInt(5);
}while(i % 2 != 0);
System.out.println(i);//Vai ser par

Ou a ideia do Thingol que achei bem legal

[quote=dedejava]Daí galera.
Precisava randomizar os números 0, 2 e 4.
[/quote]

A forma mais simples


class Randomizer {
List <Integer> numeros = new ArryaList<Integer>();

public Randomizer (Integer ... values){
numeros.addAll(Arrays.aslist(values));
}


public Integer getNext(){
Collections.shuffle(numeros);
return numeros.get(0);
}

}

uso

Randomizer ram = new Randomizer (0,2,4);

ram.getNext();
ram.getNext();
ram.getNext();


Ae galera, valeu pelas respostas…

Sergio, tenho uma pergunta… o Randomizer então é diferente do Random, né?
E o ram.getNext(); pega um número qualquer ou ele pega na seqüência?

Gostei muito das respostas… algumas falara uma coisa que eu já havia fazendo (o do i % 2).
A que mais me atraiu até agora foi a do 2*numeroAleatorio. Realmente é uma boa dica essa :slight_smile:

Todas as repostas muito boas.
Muito obrigado! Abraço!

[quote=dedejava]Ae galera, valeu pelas respostas…

Sergio, tenho uma pergunta… o Randomizer então é diferente do Random, né?
E o ram.getNext(); pega um número qualquer ou ele pega na seqüência?
[/quote]

O Randomizer é uma classe que eu proprio criei ( com o codigo que escrevi) e depois usaria.Não pertence ao Java padrão.

O getNext() trás o próximo numero na sequencia. Mas detalhe, a seqüencia é aleatória.
Eu usei esse nome para ser semelhante ao dos definidos em Random (que pertence ao Java padrão) mas poderia ser qq coisa.

É que eu entendi que vc queria sortear apenas entre esses 3 numeros apenas, e não entre todos os numeros pares ( que é o problema resolvido pelas sugestões dos outros posts do topico)

Ou seja, se eu quiser sortear entre 0, 7 , 10 e 78 posso tb :wink:

Randomizer ram = new Randomizer(0,7,10,78);