Java - Matrice di elementi casuali

di il
3 risposte

Java - Matrice di elementi casuali

Buongiorno a tutti,
Sono alle prese con un problema apparentemente banale, ma che mi sta dando del filo da torcere. In pratica vorrei generare una matrice di elementi casualmente presi da un vettore dato. Il problema aggiuntivo è che una delle righe della matrice deve essere uguale al vettore dato. Fin'ora il mio codice è questo:
static String[] imgArray = { "colline1.jpg", "colline2.jpg", "nebbia.jpg" };

	public static String[][] buildTest() {
		String htmlCode = null;
		StringBuilder sb = new StringBuilder();
		int random = ThreadLocalRandom.current().nextInt(0, 2);

		String[][] grid = new String[NUMERO_IMMAGINI][NUMERO_IMMAGINI];
		
		grid[random] = imgArray;
		
		for (int i = 0; i < NUMERO_IMMAGINI; i++) {
			shuffle(grid[i]);
			grid[i] = imgArray;
		}
		
		return grid;
	}
	public static String[] shuffle(String[] array) {
		for (int i = 0; i < array.length; i++) {
			int index = (int)(Math.random()*array.length);
			String temp = array[i];
			array[i] = array[index];
			array[index] = temp;
		}
		return array;
	}
Qualcuno potrebbe gentilmente darmi qualche dritta?
Grazie infinite

3 Risposte

  • Re: Java - Matrice di elementi casuali

    lucad93 ha scritto:


    In pratica vorrei generare una matrice di elementi casualmente presi da un vettore dato. Il problema aggiuntivo è che una delle righe della matrice deve essere uguale al vettore dato.
    Mi viene in mente: la prima riga della matrice la metto esattamente uguale al vettore. Le altre righe le riempio casualmente come hai detto.
    Alla fine "mescolo" casualmente le righe della matrice.
  • Re: Java - Matrice di elementi casuali

    Forse sarebbe meglio generare banalmente un indice di riga in cui porre il vettore.
    per ogni altra riga paciuga come ti pare
  • Re: Java - Matrice di elementi casuali

    Dunque, sono riuscito a generare un vettore di elementi casuali tramite il codice seguente:
    	public static String[][] buildTest() {
    		String htmlCode = null;
    		StringBuilder sb = new StringBuilder();
    		
    		
    		Random r = new Random(System.currentTimeMillis());
    		int random = r.nextInt(3);
    		
    		String[][] grid = new String[NUMERO_IMMAGINI][NUMERO_IMMAGINI];
    		grid[random] = imgArray;
    		for (int i = 0; i < grid.length; i++) {
    			if(i == random) {
    				continue;
    			} else {
    				grid[i] = RandomizeArray(imgArray);
    			}
    		}
    		return grid;
    	}
    
    	public static String[] RandomizeArray(String[] array){
    		Random rgen = new Random();  // Random number generator			
     
    		for (int i=0; i<array.length; i++) {
    		    int randomPosition = rgen.nextInt(array.length);
    		    String temp = array[i];
    		    array[i] = array[randomPosition];
    		    array[randomPosition] = temp;
    		}
     
    		return array;
    	}
    	public static void main(String[] args) {
    		System.out.println(Arrays.deepToString(buildTest()));		
    	}
    Però, una volta settata la prima riga, le altre vengono sempre uguali. Cioè, la matrice finale è sempre diversa, ma con le righe sempre uguali
Devi accedere o registrarti per scrivere nel forum
3 risposte