I am writing a program for a 1d and 2d array that generates 4096 random and unique integers. I am stuck on my method for determining whether or not an integer has already been used, and if it has, to throw it and get a new integer. Currently, I am getting an out of bounds exception error, and I have looked up how to remove oob, but I haven't found anything helpful related to my program. Could someone take a look at my code and let me know what needs to be changed to get the logic working correctly? Thanks!
2D Array:
Random random = new Random();
int[][] arrayone = new int[4097][1];
boolean[][] used = new boolean[4097][1];
for(int b = 0; b < arrayone.length; b++) {
for(int i = 0; i < arrayone[b].length; i++) {
for (int number = 0; number < used.length; number++) {
for (int x = 0; number <used[number].length; x++) {
number = random.nextInt(99999)+1;
if (!used[number][x]){
used[number][x] = true;
arrayone[b][i] = number;
}
else {
while(used[number][x]) {
number = (int)(Math.random() * 99999 + 1);
if (!used[number][x]) {
used[number][x] = true;
arrayone[b][i]=number;
break;
}
}
}
}
}
}
}
1D Array:
int[] arrayone = new int[4097];
boolean[] used = new boolean[4097];
for(int i = 0; i < arrayone.length; i++) {
int number = (int)(Math.random() * 99999 + 1);
if (!used[number]){
used[number] = true;
arrayone[i] = number;
}
else {
while(used[number]) {
number = (int)(Math.random() * 99999 + 1);
if (!used[number]) {
used[number] = true;
arrayone[i]=number;
break;
}
}
}
}