Dúvida sobre randômicos

5 respostas
Rodrigo_Mattos

Olá a todos.

No problema no qual estou resolvendo preciso criar um número randômico no intervalo de -20 até 20. Já usei o -20+(int)(20*Math.random()) mas não deu certo, este só produz randômicos negativos.

Caso possam me ajudar fico grato!

Abraços!

5 Respostas

EugenioMonteiro

Eu faria assim:

int numero=(int) Math.random()%21; //aqui teríamos qualquer valor entre 0 e 20 int sinal = (int) Math.random()%2; //aqui teríamos os valores 0 ou 1 if (sinal==1){// para números negativos numero=-numero; }

A

Acho que o seguinte funcionaria melhor:

Random r = new Random(); int numero = r.nextInt(41) - 20;

[]'s

r_Jovelli

Ei cara vc está multiplicando por 20. Se vc quer um número que tenha o valor máximo de 20 deve multiplicar por 21… Math.Random() retorna um double randômico entre 0,001 e 0,999 ou seja a multiplicação é que define o escopo do número randômico retornado…

Ao multiplicar por 20 vc vai conseguir um número entre 0,001 e 19,98 e depois ao transformar em int vc terá entre 0 e 19. Sacou…

Eu faria conforme abaixo, com só uma linha dá pra resolver:

int num =  (int) ((41*Math.Random()) - 20);

:slight_smile: :slight_smile: :slight_smile:
flw

Rodrigo_Mattos

Amigos tentei todas as dicas que me foram dadas aqui. Nenhuma funcionou :frowning:

Preciso simplesmente criar um randomico no intervalo de -20 até 20. Sou iniciante, mas parece tão simples não sei porque não está dando certo.

E
private static Random r = new Random();

public static int obterValorAleatorio (int inicio, int fim) {
    return r.nextInt (fim - inicio + 1) + inicio;
}

...
System.out.println (obterValorAleatorio (-20, +20));
Criado 5 de outubro de 2009
Ultima resposta 5 de out. de 2009
Respostas 5
Participantes 5