2D int array shuffle
arrays, java, multidimensional-array, shuffle
Solution
You can use Fisher–Yates algorithm modified for two-dimensional arrays:
void shuffle(int[][] a) {
Random random = new Random();
for (int i = a.length - 1; i > 0; i--) {
for (int j = a[i].length - 1; j > 0; j--) {
int m = random.nextInt(i + 1);
int n = random.nextInt(j + 1);
int temp = a[i][j];
a[i][j] = a[m][n];
a[m][n] = temp;
}
}
}
Problem
im new to this but im tring to do a hotel reservation program. So i have a 2D int array with ALL rooms, when i start the program i want them to be randomly shuffle in to an array called RoomNotInUse or RoomInUse (so evertime i start the program the rooms are randomly generated. Would be awesome if anyone know a way around this :) ``` // ARRAYS protected static int[][] rooms = { {1,1}, {1,2}, {1,3}, {1,4}, {1,5}, {2,1}, {2,2}, {2,3}, {2,4}, {2,5}, {3,1}, {3,2}, {3,3}, {3,4}, {3,5}, {4,1}, {4,2}, {4,3}, {4,4}, {4,5}, {5,1}, {5,2}, {5,3}, {5,4}, {5,5} }; //Declare all hotel rooms 5x5, the first number is the floor and the sec is the room private char[][] ROIU = { }; //Rooms not in use private char[][] RIU = { }; //Rooms in use public class roomShuffle { } //Shuffle all rooms in 2 diffrent arrays, ROIN and RIU public class RoomNotInUse { } //Displayes all the rooms thats not in use public class RoomInUse { } //Displayes all rooms in use ``` }