Math.radom()

7 respostas
G

Olá pessoal, eu tenho que fazer um exercicio de vetores utilizando o math.radom() mas eu não sei direitinho como ele funciona. Alguem aí tem um artigo ou uma explicação simples, só pra eu entender a funcionalidade dele e ta. Obrigado aí.

7 Respostas

E

O nome do método é “random” e basicamente ele lhe retorna um número qualquer que está entre 0.0 e 1.0.

O que você faz com esse número?

Por exemplo, se você quiser sortear um valor entre 1 e 6, como em um jogo de dados:

  • Pegue o tal valor retornado por Math.random
  • Multiplique por 6 (que é a quantidade de alternativas possíveis - 1, 2, 3, 4, 5, 6 - em um jogo de dados)
  • Some 1 (que é o primeiro elemento)
  • E então ache o valor inteiro dessas contas.

Se precisar sortear um valor entre 0 e 99:

  • Pegue o valor retornado por Math.random
  • Multiplique por 100 (que sáo as alternativas 0, 1, 2, 3, … 98, 99 )
  • Some 0 (o primeiro elemento é zero)
  • Ache o valor inteiro.

Para achar o valor inteiro, use um cast para (int)

Rodrigo_Sasaki

O Math.random() te gera um número aleatório entre 0 e 1, aí eu geralmente multiplico pra ficar com a quantidade de números que eu quero.

Ex: Quero um número aleatório de 6 dígitos

System.out.println(Math.random() * 999999); Creio que devem haver maneiras mais eficientes.
Lembre-se também que o número gerado é um double. Eu não tratei os decimais no exemplo, mas você pode precisar.

E

O Math.random() te gera um número aleatório entre 0 e 1, aí eu geralmente multiplico pra ficar com a quantidade de números que eu quero.

Ex: Quero um número aleatório de 6 dígitos

System.out.println(Math.random() * 999999); Creio que devem haver maneiras mais eficientes.
Lembre-se também que o número gerado é um double. Eu não tratei os decimais no exemplo, mas você pode precisar.

A conta efetuada está errada, O correto, para um número de 6 digitos (que vai de 0 até 999999 - note que o número de alternativas possíveis é 1000000, não 999999) é:

(int) (Math.random() * 1000000)

Eu dei o exemplo do dado, só para perceber que é necessário contar quantas sáo as alternativas possíveis, em vez de só achar o maior número.

Rodrigo_Sasaki

é, assim que eu li sua explicação vi a falha no meu código.
que “funciona”, mas pela regra está errado, nunca chegaria no 999999.

ViniGodoy

Acho que a confusão é que o Math.random() gera um número decimal aleatório entre 0 e 1, mas nunca o próprio número 1.

javatar

Boa tarde,

Se tiver alguma dúvida sobre o Math.random ainda, vou explicar um pouco sobre ele.

Para que funcione utilize da seguinte forma:

int i = 90 +(int) ( Math.random() * 11);

Nesse caso a variável i vai receber um valor de 90 a 100.

O math.random gera o número de 0 a 1, por exemplo 0,4 e vai fazer 0,4 * 11 = 4,4 o b[/b] faz um cast que nada mais é arrendondar o valor que o math.random retorna 4,4 vira 4, pois é um double e o 90 indica que irá começar em 90 e com a soma de 11 da 101, mas como ele sempre vai pegar o ultimo número ficando de 90 a 100.

Por exemplo se fosse de 5 a 15:

int i = 5 +(int) ( Math.random() * 11);

e de 1 a 10:

int i = 1 +(int) ( Math.random() * 10);

Espero ter ajudado.

S

Muito bom esse topico, vai ajuda muitos ini igual eu

Criado 23 de maio de 2012
Ultima resposta 28 de mai. de 2012
Respostas 7
Participantes 6