GARANTIR DESCONTO

Fórum Math.random #565800

09/04/2009

0

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

Responder

Posts

09/04/2009

Eduardo Gonçalves

[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);
Responder

Gostei + 0

09/04/2009

Rainer Medrado

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...
Responder

Gostei + 0

09/04/2009

Rainer Medrado

[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: :!:
Responder

Gostei + 0

09/04/2009

Eduardo Gonçalves

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!!!!
Responder

Gostei + 0

09/04/2009

Eduardo Gonçalves

[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:
Responder

Gostei + 0

09/04/2009

Eduardo Gonçalves

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?
Responder

Gostei + 0

09/04/2009

Eduardo Gonçalves

[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?? :!:
Responder

Gostei + 0

09/04/2009

Eduardo Gonçalves

Valeu! Entendi!
Responder

Gostei + 0

09/04/2009

Rafael Villar

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?
Responder

Gostei + 0

09/04/2009

Anderson Wagner

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);  
Responder

Gostei + 0

09/04/2009

Rafael Villar

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

Gostei + 0

09/04/2009

Bret_hart

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...
Responder

Gostei + 0

09/04/2009

Carlos Heuberger

como eh que esta o seu programa?
Responder

Gostei + 0

09/04/2009

Bret_hart

	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
Responder

Gostei + 0

09/04/2009

Carlos Heuberger

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;
...
[]]
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar