OI GENTE…SURGIU UMA DÚVIDA…SE ALGUEM PUDER ME AJUDAR…FICO AGRADECIDA… PRECISO FORMAR UMA MATRIZ(9X9) COM NUMEROS RANDOMICOS (EM JAVA)…COMO POSSO FAVER ISSO??
Função gera numeros Randomicos
9 Respostas
Já deste uma lida na documentação do Java alguma vez na vida? Se tivesse, não faria tal pergunta.
Até!
Obs.: É de péssimo tom escrever todo o texto em maiúsculas.
Utilize o método random da class Math
Math.random();
O math.random() tem um comportamento ruim.
Use o objeto Random().
Por exemplo:
int matriz = new int[9][9];
Random random = new Random();
for (int i = 0; i < 9; i++)
for (int j = 0; j < 9; j++)
matriz[i][j] = random.nextInt(100); //Número de 0 até 99
Fiz tudo pra vc, agora fica por sua conta implementar para evitar numeros repetidos dentro da Matriz.
// Este exemplo gera uma Matriz Quadrada.
public class Matriz {
public static void main(String[] args) {
int tamanhoMatriz = 81; // 9x9=81
int matriz[] = new int[tamanhoMatriz];
geraMatriz(matriz, tamanhoMatriz);
imprimir(matriz, tamanhoMatriz);
}
public static int[] geraMatriz(int[] matriz, int tamanhoMatriz) {
for (int i = 0; i < tamanhoMatriz; i++) {
matriz[i] = (int) (Math.random() * 30) + 1; // Possibilidades 1 ate 30
}
return matriz;
}
private static void imprimir(int[] matriz, int tamanhoMatriz) {
int c = 0;
for (int i = 0; i < tamanhoMatriz; i++) {
if (c == i) {
if (c == 0) {
c = c + 9;
} else {
System.out.println(); // Próxima linha a cada 9 valores
c = c + 9;
}
}
if (matriz[i] < 10) {
System.out.print("[0" + matriz[i] + "]");
} else {
System.out.print("[" + matriz[i] + "]");
}
}
}
}
Opa Vini, como assim tem um comportamento ruim?
vlw
Dá uma lida aqui:
http://www.leepoint.net/notes-java/algorithms/random/random-api.html
Agradeço pelas respostas!!!..
Não é que o método tenha um comportamento ruim. Para doubles, tem um ótimo comportamento. Entretanto, o nextInt() tem um comportamento melhor para inteiros, além de já convenientemente retornar um número no intervalo que você quiser.
Outro problema que ocorre é quando o algoritmo é usado de maneira errada. E existem algumas formas de se fazer isso. Uma delas é ao arredondar o número ao invés de truncar. Outra questão é que existe perda de precisão ao se multiplicar números.
É meio complicado explicar em detalhes aqui sem entrar em alguma matemática, mas você pode ver uma boa diferenciação entre algoritmos de números pseudo-aleatórios que trabalham com double e ints no livro Applied Criptography, do Bruce Schneier.
obrigado pela explicação…