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.
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 ?
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).
[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();
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
Todas as repostas muito boas.
Muito obrigado! Abraço!
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