Oi pessoal, hoje fiz uma prova de Java na qual tinha uma questão que tinha que usar instância mais ou menos assim:
Uma classe possui um atributo vetor de 20 elementos, um construtor que sorteia numeros de 20 a 50 e armazena nesse vetor e um método
que mostra a interseção de dois vetores.
Alguém sabe me dizer como eu deveria resolver essa questão?
Instância
15 Respostas
Vc tinha que implementar esta classe ???
Como você respondeu na prova ? posta ai que vamos ver se esta certo ou errado e corriger o erro caso tenha!!!
Abraço
Se você tem que usar a instância, estou supondo que a classe estava pronta? É isso?
Ou você tinha que escrever a classe?
A questão era narrativa ou prática?
Dá mais detalhes aí e vamos “discutindo”…
Abraço.
Bem você deveria ter feito um método sortear, onde você usa umas das funções Math, que é a Math.random 20*60+ 1, por exemplo que sorteia os valores de 20 a 60.
para você colocar dentro do vetor você deveria ter formado um for, assim como o abaixo:
public void sortear(){
(int cont =0;cont<20;cont++){
vetor[cont]=math.random * 60 + 20 );
}}
Eu faria assim…
Só um detalhe… onde entra a questão de instância na questão, pois para abordá-la temos que ter uma classe pronta assim podemos “instânciar” um objeto dessa classe.
Mas se a questão era para implementar a classe ai seria muito simples e depois disso vc poderia instânciar um objeto dela…
Explique melhor essa questão…
=)
Concordo plenamente,

mas ajudo quando possível.
Sera que seria instanciar a classe Random? Acho que essa classe nem precisa instanciar ne? rsrs
Abraços
Não precisa não… é só pegar e usuar:
Math.randon()
Não precisa não… é só pegar e usuar:
Math.random()
O math.random() tem um problema sério. Pense um pouco, qual é a chance de dar 10 nesse sorteio:
int numero = (int)(Math.random() * 10);
Observe que a única forma de você obter um 10 é se o resultado do random for exatamente 1. Qualquer outro número será truncado. Portanto, a chance do 10 sair é ridiculamente menor do que a dos outros números.
O 0, por exemplo, poderá ser obtido se o random() retornar 0.01, 0.02, 0.03…
Isso gera um problema sério. Não temos uma distribuição estatística adequada entre os números gerados pelo Math.random().
O ideal é usar a classe Random. Ela possui o método nextInt() que gera um número entre 0 até o número informado-1. No caso, a mesma distribuição poderia ser feita assim:
Random random = new Random();
int numero = random.nextInt(11);
Ainda evita o cast inconveniente. No caso do método do colega… era possível usar ArrayList. Ou tinha que ser com arrays primitivos mesmo?
Então quando eu uso um objeto ad classe randon é mais provável dar o numero maximo… não entendi o pq disso =\
A lição básica é… se for gerar números inteiros, use a classe Random() ao invés do Math.random().
Se eu não me engano, nas versões atuais do Java esse problema não ocorre mais. O contrato atual da Math.random() gera um número < 10. Logo, para gerar algo entre 0 e 10 vc teria que fazer:
int num = (int)Math.random() * 11;
[quote=ViniGodoy]Logo, para gerar algo entre 0 e 10 vc teria que fazer:
int num = (int)Math.random() * 11;
Mas sempre quando eu preciso gerar numero aleatórios com o random eu faço assim, eu coloco N+1.
na verdade… tem sim como fazer usando o Math.random ()…
até pq eu uso!
ker um numero de 0 a 5?
int numero = (int)Math.floor ( Math.random()*6 );
simples…
Math.random gera um numero aleatorio de 0,000000 até 0,999999
- 6… fica
de 0,00000 até 5,99999
arredonda pra baixo… com Math.floor…
e temos de 0 a 5… com chances iguais
Sim, eu gosto de ressaltar porque é a dica dada pelo Joshua Bloch, no Effective Java, quando ele diz:
“Know and use the libraries”.
Se existe um método, na classe Random, que foi especificamente pensado para dar resultados em um intervalo de inteiros, não use um método que te retorna doubles.
Com o Math.random() seu descuido pode gerar uma distribuição menos uniforme e pior do que a classe Random gerará. Use o método mais apropriado. É mais fácil e indolor… 
Sim, eu gosto de ressaltar porque é a dica dada pelo Joshua Bloch, no Effective Java, quando ele diz:
“Know and use the libraries”.Se existe um método, na classe Random, que foi especificamente pensado para dar resultados em um intervalo de inteiros, não use um método que te retorna doubles.
Com o
Math.random()seu descuido pode gerar uma distribuição menos uniforme e pior do que a classe Random gerará. Use o método mais apropriado. É mais fácil e indolor… :)
Penso igual. Nao trara tanto problemas agora e mais futuramente…
Não precisa não… é só pegar e usuar:
Math.randon()
Eu perguntei porque no livro do Deitel tem um uso dessa classe… E se nao me engano tinha que instanciar essa classe…
Abraços
Sim, a classe Random tem que ser instanciada.
A verdade é que os números aleatórios não são realmente aleatórios. Eles são a implementação de uma função que tem um comportamento que parece muito uma distribuição aleatória (por isso chamada de pseudo-aleatória).
Os números gerados pela função variam de acordo com uma semente inicial, que pode ser passada no construtor de um Random. Dois randoms com mesma semente irão gerar a mesma sequência de números.
Se você não especificar uma semente, o Random usará System.currentTimeMillis().
No caso da classe Math, não há necessidade de instanciar um Random. Isso porque o Random é um dos atributos estáticos da classe Math, que é inicializado assim que o método random() é chamado pela primeira vez (lazy-loading).