Сначала вы можете убедиться, что создали три уникальные координаты, случайным образом сгенерировав их и сохранив их в наборе, если размер набора не достигнет трех.Затем выполните итерацию по набору, верните координаты и инициализируйте массив.Вы можете закодировать его примерно так:
public static void main(String[] args) throws Exception {
Set<String> coordSet = new HashSet<>();
Random random = new Random();
int rows = 3;
int cols = 3;
boolean mineLocations[][] = new boolean[rows][cols];
while(coordSet.size() < 3) {
int rRow = random.nextInt(rows);
int rCol = random.nextInt(cols);
coordSet.add(String.format("%d:%d", rRow, rCol)); // set always stores unique values hence no need to check for existing data
}
System.out.println(coordSet);
coordSet.stream().forEach(x -> {
String[] pair = x.split(":");
mineLocations[Integer.parseInt(pair[0])][Integer.parseInt(pair[1])] = true;
});
}
Несколько случайных значений, напечатанных этим кодом в независимом исполнении,
[1:0, 0:2, 2:0]
[1:0, 2:0, 2:1]
[1:0, 0:1, 1:2]
[2:0, 2:1, 2:2]
Как видите, ни одна из каждой координаты не совпадает водна запись.
Здесь я сохранил координаты в виде строки, разделенной двоеточиями, но если вы хотите лучшую реализацию, вы можете создать собственный класс для хранения координат X и Y, так как это будет чище.
Как вы можете заметить, этот код будет работать в целом для любых значений строк и столбцов, которые вы можете инициализировать, и количество выбранных случайных точек также можно изменить, просто изменив значение 3
в условии while.