static void InsereDados(Funcionario funcionario[], String nomes[], String sobrenome1[]) {
int armazena = 0;
int armazena2 = 0;
for (int x = 0; x < funcionario.length; x++) {
armazena = (1 + (int) Math.random() * funcionario.length); /* aqui eu quero um int aleatorio de 1 até o tamanho de funcionario[] */
armazena2 = (1 + (int) Math.random() * funcionario.length);/* Idem, só que outro valor, possivelmente diferente do primeiro*/
funcionario[x].nome = (nomes[armazena] + " " + sobrenome1[armazena]);
funcionario[x].salario = (650.0f + (float) Math.random() * 2200.00f);
funcionario[x].codigo = x;
}
}
Math.Random dentro de um for - problema RESOLVIDO
Boa Tarde, estou usando 2 Math.Random dentro de um for, para gerar valores aleatorios, e diferentes, só que ele está retornando valores iguais para todas as passadas do loop, segue codigo...
o erro deve ser bobo, mais eu não consigo ver, se alguem puder me dê uma dica, pois quando imprimo o vetor, está todos com dados iguais...[img]
5 Respostas
o random 1 retorna o mesmo valor do random 2?
se sim, deve ser por que o random é baseado em milisegundos ou em clips do seu processador. nunca usei random em java, mas no C++ e no C# é assim.
Tenta usa o Random;
static void InsereDados(Funcionario funcionario[], String nomes[], String sobrenome1[]) {
int armazena = 0;
int armazena2 = 0;
//tenta assim:
Randon rd1 = new Random();
for (int x = 0; x < funcionario.length; x++) {
armazena = (1 + rd1.nextInt(MAX) * funcionario.length); /* aqui eu quero um int aleatorio de 1 até o tamanho de funcionario[] */
armazena2 = (1 + rd1.nextInt(MAX) * funcionario.length);/* Idem, só que outro valor, possivelmente diferente do primeiro*/
funcionario[x].nome = (nomes[armazena] + " " + sobrenome1[armazena]);
funcionario[x].salario = (650.0f + rd1.nextFloat() * 2200.00f);
funcionario[x].codigo = x;
}
}
Boa Tarde, estou usando 2 Math.Random dentro de um for, para gerar valores aleatorios, e diferentes, só que ele está retornando valores iguais para todas as passadas do loop, segue codigo...Você precisa separar com parenteses a operação do Math.random(). Você fez assim:o erro deve ser bobo, mais eu não consigo ver, se alguem puder me dê uma dica, pois quando imprimo o vetor, está todos com dados iguais...static void InsereDados(Funcionario funcionario[], String nomes[], String sobrenome1[]) { int armazena = 0; int armazena2 = 0; for (int x = 0; x < funcionario.length; x++) { armazena = (1 + (int) Math.random() * funcionario.length); /* aqui eu quero um int aleatorio de 1 até o tamanho de funcionario[] */ armazena2 = (1 + (int) Math.random() * funcionario.length);/* Idem, só que outro valor, possivelmente diferente do primeiro*/ funcionario[x].nome = (nomes[armazena] + " " + sobrenome1[armazena]); funcionario[x].salario = (650.0f + (float) Math.random() * 2200.00f); funcionario[x].codigo = x; } }
armazena = (1 + (int) Math.random() * funcionario.length);
armazena = (1 + (int) ( Math.random() * funcionario.length ) );
do {
armazena2 = (1 + (int) (Math.random() * funcionario.length));/* Idem, só que outro valor, possivelmente diferente do primeiro*/
} while (armazena == armazena2);
Muito obrigado a todos, romarcio resolvi o problema separando por parenteses, erros bobos, vou prestar mais atenção da proxima vez, muito obrigado 
Legal. Coloca seu post como resolvido. Edita o 1° post e coloca ao lado do titulo: [RESOLVIDO]
:thumbup:
Criado 31 de março de 2012
Ultima resposta 1 de abr. de 2012
Respostas 5
Participantes 4
Alura Git Flow: entenda o que é, como e quando utilizar Entenda o que é Git Flow, como funciona seu fluxo com branches como Master, Develop, Feature, Release e Hotfix, além de vantagens e desvantagens.
Casa do Codigo Ontologias e Web Semantica: Do conceito a aplicacao Por Ivam Galvao Filho — Casa do Codigo