Math.random

Java

09/04/2009

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

Eduardo Gonçalves

Curtidas 0

Respostas

Eduardo Gonçalves

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

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

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);
o correto não seria:
int i = 1 + (int)(Math.random() * 100)
:arrow: :!:
GOSTEI 0
Eduardo Gonçalves

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

Eduardo Gonçalves

09/04/2009

[quote="lcmetzger"]o correto não seria:
int i = 1 + (int)(Math.random() * 100)
:arrow: :!:
ou entao
int i = (int) (1+Math.random()*100);
:!: Nao me veio à cabeça a ordem dos operadores.... operadores de casting são feitos antes de tudo... inclusive da multiplicacao..... portanto o erro não era na atribuição.... (por incrivel que pareca) era na soma... :shock: :shock: :shock:
GOSTEI 0
Eduardo Gonçalves

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

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

Eduardo Gonçalves

09/04/2009

Valeu! Entendi!
GOSTEI 0
Rafael Villar

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

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

Rafael Villar

09/04/2009

Agente ressucita pra não criar tópicos iguais. Obrigado pela ajuda!
GOSTEI 0
Bret_hart

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

Carlos Heuberger

09/04/2009

como eh que esta o seu programa?
GOSTEI 0
Bret_hart

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);		
É isto que quer? Esse random que ai está, faz no intervalo de [1,10]. O programa é o jogo do 31. Se precisar mais qualquer coisa, so dizer
GOSTEI 0
Carlos Heuberger

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

Bret_hart

09/04/2009

Muito obrigado!!
GOSTEI 0
Mancini

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

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

Mancini

09/04/2009

Obrigado. Cumprimentos. Mancini.
GOSTEI 0
POSTAR