Math.random
Bom Tarde, Pessoal!
Usando o método Math.random, como eu faria para gerar números aleatórios entre 1 a 100? Os números gerados não podem ser menor ou igual a 0 (zero) e nem maior que 100.
Obrigado pela ajuda!
Eduardo Gonçalves
Curtidas 0
Respostas
Eduardo Gonçalves
09/04/2009
[quote="goncalves_e"]Bom Tarde, Pessoal!
Usando o método Math.random, como eu faria para gerar números aleatórios entre 1 a 100? Os números gerados não podem ser menor ou igual a 0 (zero) e nem maior que 100.
Obrigado pela ajuda!
int i = (int) 1 + (Math.random() * 100);
GOSTEI 0
Rainer Medrado
09/04/2009
Só uma observação, o método Math.randon() retorna um double, daí a necessidade de se fazer um casting para um int, senão ele não irá retornar números inteiros.
Valeu...
GOSTEI 0
Rainer Medrado
09/04/2009
[quote="lucastex"][quote="goncalves_e"]Bom Tarde, Pessoal!
Usando o método Math.random, como eu faria para gerar números aleatórios entre 1 a 100? Os números gerados não podem ser menor ou igual a 0 (zero) e nem maior que 100.
Obrigado pela ajuda!
int i = (int) 1 + (Math.random() * 100);
int i = 1 + (int)(Math.random() * 100)
GOSTEI 0
Eduardo Gonçalves
09/04/2009
Valeu Pessoal, obrigado pela ajuda!!!
Vejam como é as coisas, as vezes a solução do problema está na sua frente e vc não vê. As vezes vc transforma seu problema de uma forma, que vc acha que precisa de algo mais difícil pra solucionar. Eu já tinha pensado e testado uma soma também, só que eu estava aplicando antes de multiplicar por 100 e aí não fechava em certas ocasiões. Outro ponto que percebe é que num problema anterior, eu poderia ter resolvido facilmente uma outra questão. Eu precisa simular a jogado de dado, ou seja, números de 1 a 6, e fiz da seguinte forma.
public class Exer1pg86 {
// início do método main
public static void main( String args[] )
{
for ( int i=0; i < 10; i++ )
{
System.out.println( ( i + 1 ) + "ª jogada = " + ( int ) Math.ceil( ( Math.random() * 6 ) ) );
}
}
}
Quando na verdade poderia ter feito deste modo:
public class SimuladorDado {
// início do método main
public static void main( String args[] )
{
for ( int i=0; i < 10; i++ )
{
System.out.println( ( i + 1 ) + "ª jogada = " + ( int ) ( 1 + ( Math.random() * 6 ) ) );
}
}
}
Mais uma vez obrigado pela ajuda!!!!
GOSTEI 0
Eduardo Gonçalves
09/04/2009
[quote="lcmetzger"]o correto não seria:
:arrow: :!:
ou entao
int i = 1 + (int)(Math.random() * 100)
int i = (int) (1+Math.random()*100);
GOSTEI 0
Eduardo Gonçalves
09/04/2009
Então vc está dizendo que antes do valor gerado pelo random ser multiplicado por 100 e somado por 1, ele vai ser alterado por (int), ou seja, passará a ser inteiro?
GOSTEI 0
Eduardo Gonçalves
09/04/2009
[quote="goncalves_e"]Então vc está dizendo que antes do valor gerado pelo random ser multiplicado por 100 e somado por 1, ele vai ser alterado por (int), ou seja, passará a ser inteiro?
int i = (int) (1+Math.random()*100);
1) Gerar um número aleatório maior ou igual a 0 e menor que 1
2) multiplicar este numero por 100 (vira um numero aleatório maior ou igual a 0, menor que 100)
3) somar 1 (vira um numero aleatório maior que 1, menor ou igual a 100)
porem este numero ainda é um double....
4) faz o cast para int
5) atribui nessa variável
Deu pra entender??
:!:
GOSTEI 0
Eduardo Gonçalves
09/04/2009
Valeu! Entendi!
GOSTEI 0
Rafael Villar
09/04/2009
Primeiramente bom dia.
Meu nome é Rafael e sou bem iniciante em Java...
Estou com um problema para fazer o Math.random().
Eu não sei como ele funciona, logo não entendi como é a inicialização dele, se eu declaro alguma variável e aonde eu guardo os números que ele gera?
GOSTEI 0
Anderson Wagner
09/04/2009
mais um da serie "Ressuscitando tópicos antigos".
ah e vc guarda o valor gerado numa variável como citado
int i = (int) (1+Math.random()*100);
GOSTEI 0
Rafael Villar
09/04/2009
Agente ressucita pra não criar tópicos iguais.
Obrigado pela ajuda!
GOSTEI 0
Bret_hart
09/04/2009
Bem tenho de ressuscitar isto outravés.
O meu problema é mais chato, tenho de fazer um random entre [1,9].
Já experimentei várias formulas baseadas no que vi aqui, e noutros sitios mas sempre que teste ou tenho lá o zero ou o dez...
GOSTEI 0
Carlos Heuberger
09/04/2009
como eh que esta o seu programa?
GOSTEI 0
Bret_hart
09/04/2009
public static void main(String[] args) {
//
int J1,J2,pts=0;
char next='+';
Scanner in = new Scanner (System.in);
System.out.println("Round 1");
while (next == '+')
{
int num = (int) (((Math.random()+0.1)*10));
pts += num;
System.out.print("J1 ("+num+") " +pts+"\n");
next = in.next().charAt(0); GOSTEI 0
Carlos Heuberger
09/04/2009
no fundo eh problema de matematica.
O random gera numeros no intervalo [b][0.0, 1.0)[/b], ou seja, entre 0.0 (inclusive) e 1.0 (exclusive), ou, entre 0.0 e 0.999...
Voce quer um numero no intervalo [b][1, 9][/b] ou, mais correto, [b][1.0, 9.999...][/b] para depois transformar num int.
Se subtrair 1, para ser adicionado mais tarde (apos multiplicacao), o intervalo fica [b][0.0, 8.999...][/b] ou [b][0.0, 9.0)[/b], logo tem que multiplicar o random por 9 (0.999.. * 9 = 8.99..)
[]]
... int num = (int) (Math.random() * 9) + 1; ...
GOSTEI 0
Bret_hart
09/04/2009
Muito obrigado!!
GOSTEI 0
Mancini
09/04/2009
Oi Pessoal,
tou com uma dúvida nessa parte de random de numeros.
Como faço para não deixar que se repitam números no random? ou seja não apareçam números iguais no random?
Cumprimentos
Mancini
GOSTEI 0
Carlos Heuberger
09/04/2009
[quote="Mancini"]Oi Pessoal,
tou com uma dúvida nessa parte de random de numeros.
Como faço para não deixar que se repitam números no random? ou seja não apareçam números iguais no random?
Cumprimentos
Mancini
já tem alguns tópicos no fórum que tratam desse problema. Os primeiros que achei:
http://www.javafree.org/viewtopic.jbb?t=868495&page=1#153627
http://www.javafree.org/viewtopic.jbb?t=868276&page=1&h=random#152677
http://www.javafree.org/viewtopic.jbb?t=860274&page=1&h=random#126923
GOSTEI 0
Mancini
09/04/2009
Obrigado.
Cumprimentos.
Mancini.
GOSTEI 0