Estou estudando Java em fase inicial. Gostaria de uma ajuda quanto a um exercício que fiz referente a simulação de um jogo de dado (de seis lados), cujo o mesmo é jogado 10 vezes para exibir o resultado. Minha dúvida é que usei o método random() para gerar os valores aleatórios até o número 6, mas dessa forma aparece 0 (zero) algumas vezes. Como posso evitar que o mesmo apareça? Qualquer idéia é válida.
A classe Random é bem melhor que o Math.random. Mas se vc fizer questão, basta ler o Javadoc do método random():
Portanto, o número sempre será entre 0 e 1, mas nunca o próprio 1. Logo, se multiplicar o resultado por 7, você terá um número de 0 até quase 6 (trucando para int, de 0 até 6).
Tendo essa certeza, basta fazer:
int dado = (int)(Math.random() * 6); //Sorteia de 0 a 5
dado++; //Agora é um número de 1 até 6
Luiz_Am_ico
Agradeço a sugestão do título e realmente ficou muito melhor da forma que descreveu.
Quanto a classe Ramdom ela retorna um valor de 0 (zero) em diante, porém não gostaria que o “zero” fosse informado.
Ela continua sendo a melhor forma para trabalhar isso?
Grato pela ajuda.
ViniGodoy
Sim, basta somar o valor inicial ao resultado, como eu fiz ali com o Math.random().
Se quiser, pode até montar uma função genérica:
private static Random random = new Random();
public static int sorteia(int nrInicial, int nrFinal) {
int sorteio = random.nextInt(nrFinal - nrInicial); //Tamanho do intervalo
return sorteio + nrInicial;
}
O nrFinal não é incluído no resultado (é uma boa não incluí-lo pois fica fácil sortear índices em listas).
Luiz_Am_ico
Agradeço a dica!
O incremento em dado foi algo que não tinha pensado, veio bem a calhar.
Vou utilizar também sua segunda sugestão para ver como fica no exercício.
Grande abraço,
Valeu mesmo a ajuda.
JM4X
Que bom que solucionou seu problema.
É também uma boa prática no guj, quando o topico for solucionado, adicionar no titulo [RESOLVIDO].
Dessa forma, quando alguém tiver um problema parecido, saberá que a solução está nakele topico.