Função gera numeros Randomicos

9 respostas
T

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

9 Respostas

maquiavelbona

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.

Foxlol

Utilize o método random da class Math

Math.random();
ViniGodoy

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

gledson85

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] + "]");
			}
		}
	}
}
palilo

Opa Vini, como assim tem um comportamento ruim?

vlw

Ironlynx

Dá uma lida aqui:
http://www.leepoint.net/notes-java/algorithms/random/random-api.html

T

Agradeço pelas respostas!!!..

ViniGodoy

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.

palilo

obrigado pela explicação…

Criado 17 de novembro de 2007
Ultima resposta 19 de nov. de 2007
Respostas 9
Participantes 7