Java - Seleccionar posicion aleatoria de matriz

   
Vista:
Imágen de perfil de Mike

Seleccionar posicion aleatoria de matriz

Publicado por Mike (14 intervenciones) el 18/11/2014 04:24:05
Hola que tal necesito de vuestra ayuda quisiera saber como puedo seleccionar una posicion aleatoria de cierta matriz bidimensional entera, pero que algunas posiciones no me las tome en cuenta

algo asi como de la matriz public static int matriz_silla[][]=new int [8][10];

me tome un numero de posicion aleatoria pero que no sea la posicion matriz_silla[ 2 ][ 3 ], matriz_silla[ 6 ][ 7 ], y asi sucesivamente, estaba pensando usar la clase random pero no supe como implementarla ya que no se como tener el tamaño de una matriz bidimensional ya que el .lenght no me funciona,
gracias de antemano bro
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Seleccionar posicion aleatoria de matriz

Publicado por juanki (95 intervenciones) el 18/11/2014 15:10:50
Hola

1
no se como tener el tamaño de una matriz bidimensional ya que el .lenght no me funciona,


Cómo que no te funciona length. Cuando utilizas matrices de dos dimensiones tienes que tener en cuenta que si usas length con el nombre de la matriz, obtienes el tamaño de la primera dimensión. ¿Y para la segunda?

Fácil, tan solo debes hacer length al primer elemento de la matriz:

1
2
3
4
5
int[][] MatrizBidimensional = new int[5][10];
 
		System.out.println(MatrizBidimensional.length); // imprime 5
 
		System.out.println(MatrizBidimensional[0].length); // imprime 10

Para los números aleatorios puedes usar la clase java.util.Random, tiene, por ejemplo, un método int nextInt(int n), que te devuelve un número entre 0 y el que le pasas como parámetro (excluido), por lo tanto, si tu matriz es de dimensión 10, le pasas 10 como parámetro y obtienes un número entre 0 y 9, un índice válido.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mike

Seleccionar posicion aleatoria de matriz

Publicado por Mike (14 intervenciones) el 19/11/2014 16:22:15
Hola juanki gracias por tomarte el tiempo de responder para ayudarme, ese parametro int n es el numero o el tamaño de toda la matriz cierto ? como hago para que haya una relacion entre ese numero y la posicion de la matriz
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Seleccionar posicion aleatoria de matriz

Publicado por juanki (95 intervenciones) el 19/11/2014 19:21:18
Hola

Pues si lo que quieres es obtener un elemento de la matriz al azar, pues tendrás que obtener un índice válido, si tu matriz tiene 10 elementos, pues le pasas el 10, así te da un número al azar entre 0 y 9, lo que es un índice válido.

Si es una matriz bidimensdional tendrás que llamar dos veces a nextInt una para el primer índice y otra para el segundo, y en cada una de ellas tendrás que pasarle el número adecuado:

Si la matriz es por ejemplo [5][10], pues para obtener el primero tendrás que pasarle 5 y 10 para el segundo.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mike

Seleccionar posicion aleatoria de matriz

Publicado por Mike (14 intervenciones) el 20/11/2014 23:19:08
Podrias asesorarme con un poco de codigo porfavor un ejemplo sencillo me seri muy util juanki, si no es abusar de tu confianza
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Seleccionar posicion aleatoria de matriz

Publicado por juanki (95 intervenciones) el 21/11/2014 11:14:55
Hola

Hice un pequeño ejemplo a ver si te ayuda.

Creo una matriz y la lleno con un par de bucles, luego la muestro por pantalla y al final muestro el contenido de 10 posiciones aleatorias de la matriz. Recuerda que la fila y columna primera es la 0, no la 1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
int[][] matriz = new int[8][10];
 
// llenar la matriz
for(int i = 0; i < matriz.length; i++) {
	for(int j = 0; j < matriz[0].length; j++) {
		matriz[i][j] = i+j;
	}
}
 
// imprimirla
for(int i = 0; i < matriz.length; i++) {
	for(int j = 0; j < matriz[0].length; j++) {
		System.out.print(matriz[i][j] + ",");
	}
	System.out.println();
}
System.out.println();
 
Random r = new Random();
 
// imprimir 10 valores aleatorios de la matriz
for(int i = 0; i < 10; i++) {
 
	// nextInt da un número entre 0 y el que le pasas en el
	// argumento, es decir, en el primer caso entre 0 y 7
	// y en la segunda entre 0 y 9. Por lo que obtenemos un
	// índice válido
	int i1 = r.nextInt(matriz.length);
	int i2 = r.nextInt(matriz[0].length);
 
	System.out.print("Fila:" + i1 + ", ");
	System.out.print("Columna:" + i2 + ": ");
	System.out.println("Valor:" + matriz[i1][i2]);
}

Si cambias el tamaño de la matriz, el programa sigue funcionando, ya que en los bucles for utilizo el tamaño de la matriz en vez de un número para controlar que no me paso del límite.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar