numero aleatorio entre um limite (5 e 10 por exemplo)
Boa tarde,
Alguem me podes explicarcomo calcular um numero aleatorio entre um limite, por exemplo entre 5 e 10?
Obrigado
Nuno
Nunomartins_01
Curtidas 0
Melhor post
Luiz Pereira
09/04/2009
[quote="olisses"]5+5*(int)Math.random();
Uma pequena correção:
5+(int)( 6*Math.random() )
- O cast deve ser feito depois da multiplicação, senão retorna sempre zero
- multiplique por 6 pq o método retorna um numero de 0 a menor que 1, nunca retorna 1, então jamais daria 10.
flw
GOSTEI 1
Mais Respostas
Olisses
09/04/2009
5+5*(int)Math.random();
GOSTEI 0
Terra Jr.
09/04/2009
Amigos, aproveitando o espaço, estou com um problema.
Fiz uma classe que cálcula randomicamente e exibe 20 numeros de 100.
Como se fosse um software para criar jogos de loteria...
De 0 a 100 ele tira 20 numeros.
Consegui fazer, ok. Usei a método Math.random(), mas ele repete os números e eu não quero que ele gera números repetidos, e, eu não dei:00ps: conta de terminar, é tão simples. :cry: (Sou novato) :!:
Alguém pode fazer esse algoritmo pra mim.?
GOSTEI 0
Terra Jr.
09/04/2009
Galera, como eu disse vou gerar randomicamente 20 numeros de 100.
Então quero alimentar uma array de 20. Como eu faço o laço para alimentar? Gerar os 20 numeros e não repetir nenhum?!!!
Amigos, ai está somente o código onde vai gerar os 20 numeros na array.
Alguém pode terminar para mim, assim eu vejo qual a melhor maneira e aprendo.
Desculpe-me mas sou novato.!! Obrigado pela atenção amigos. :evil:
int valor;
int vetor[] = new int[20];
for (int i = 0; i <=20 ; i++){
valor = 1 + (int) (Math.random()*100);
for (int i1=0;i1<=i;i1++ )
if (vetor[i1] != valor){
vetor[i] = valor; //Acrescenta o valor a array
}
}GOSTEI 0
Paulo W.
09/04/2009
Sou novo no forum e estava procurando um gerador de numero aleatorio e vi seu codigo e acho que colocando um flag resolve o seu problema blz... valeu...
int valor;
int vetor[] = new int[20];
boolean Salvar = false;
for (int i = 0; i < 20 ; i++){
valor = 1 + (int) (Math.random()*100);
Salvar = true ;
for (int y=0;y<=i;y++ ){
if (vetor[y] == valor){
Salvar = false;
i--;
}
}
if (Salvar){
vetor[i] = valor; //Acrescenta o valor a array
}
}
GOSTEI 0
Rodrigo Tormente
09/04/2009
[quote="lap_junior"][quote="olisses"]5+5*(int)Math.random();
Uma pequena correção:
5+(int)( 6*Math.random() )
- O cast deve ser feito depois da multiplicação, senão retorna sempre zero
- multiplique por 6 pq o método retorna um numero de 0 a menor que 1, nunca retorna 1, então jamais daria 10.
flw GOSTEI 0
Rodrigo Tormente
09/04/2009
[quote="terra.jr"]Galera, como eu disse vou gerar randomicamente 20 numeros de 100.
Então quero alimentar uma array de 20. Como eu faço o laço para alimentar? Gerar os 20 numeros e não repetir nenhum?!!!
Amigos, ai está somente o código onde vai gerar os 20 numeros na array.
Alguém pode terminar para mim, assim eu vejo qual a melhor maneira e aprendo.
Desculpe-me mas sou novato.!! Obrigado pela atenção amigos. :evil:
Amigo, [url="http://javafree.uol.com.br/customSearch.jbb?cx=partner-pub-9439984557405450%3Af7zor0-i5vx&cof=FORID%3A10&ie=ISO-8859-1&q=aleat%F3rio&sa=Pesquisar&siteurl=javafree.uol.com.br%252Fviewtopic.jbb%253Ft%253D868276%2526page%253D1%2526h%253Drandom%2523152677"]na busca do fórum você encontraria facilmente a sua questão[/url]. O simu te alertou sobre isso na sua primeira mensagem.
Segue uma solução, com Set:
int valor;
int vetor[] = new int[20];
for (int i = 0; i <=20 ; i++){
valor = 1 + (int) (Math.random()*100);
for (int i1=0;i1<=i;i1++ )
if (vetor[i1] != valor){
vetor[i] = valor; //Acrescenta o valor a array
}
}
Set<Integer> valores = new HashSet<Integer>();
while (valores.size() < 20) {
valores.add(1 + (int) (Math.random() * 100));
}
GOSTEI 0
Rodrigo Tormente
09/04/2009
[color=blue]Pessoal, notem que estão revivendo um tópico que já tem quase um ano sem atividades... "10/04/2009 05:18:44" não é a data real, o tópico é mais velho.. Devido a uma falha, todos os tópico anteriores receberam essa data.[/color]
Mas mesmo assim:
[quote="digaort"][quote="lap_junior"][quote="olisses"]5+5*(int)Math.random();
Uma pequena correção:
5+(int)( 6*Math.random() )
- O cast deve ser feito depois da multiplicação, senão retorna sempre zero
- multiplique por 6 pq o método retorna um numero de 0 a menor que 1, nunca retorna 1, então jamais daria 10.
flw 5 <= i <= 10
0.0 <= x < 1.0
5.0 <= y < 11.0
0.0 <= x < 1.0 (x é o resultado ro "random()") 5.0 <= y < 11.0 (y é o real que queremos obter) y = a + b*x (a formula para calcular o y) x0 = 0.0; y0 = 5.0 x1 = 1.0; y1 = 11.0 5.0 = a + b*0.0 11.0 = a + b*1.0 a = 5.0 b = 6.0 y = 5.0 + 6.0*x
x = 0.0 y = 5.0 + 6.0*0.0 = 5.0 i = 5
x = 0.9999... y = 5.0 + 6.0*0.9999... = 5.0 + 5.9999... = 10.9999... i = 10
GOSTEI 0
Guilherme Maschio
09/04/2009
[quote="terra.jr"]Galera, como eu disse vou gerar randomicamente 20 numeros de 100.
Então quero alimentar uma array de 20. Como eu faço o laço para alimentar? Gerar os 20 numeros e não repetir nenhum?!!!
Amigos, ai está somente o código onde vai gerar os 20 numeros na array.
Alguém pode terminar para mim, assim eu vejo qual a melhor maneira e aprendo.
Desculpe-me mas sou novato.!! Obrigado pela atenção amigos. :evil:
:zoio: :zoio: :zoio:
int valor;
int vetor[] = new int[20];
for (int i = 0; i <=20 ; i++){
valor = 1 + (int) (Math.random()*100);
for (int i1=0;i1<=i;i1++ )
if (vetor[i1] != valor){
vetor[i] = valor; //Acrescenta o valor a array
}
}GOSTEI 0