Если числа остаются низкими, вы можете поместить их все в список (кроме, например, 25), а затем перемешать его:
List<Integer> randomNumbers = new ArrayList<>();
for (int i = 0; i < 100; i++) {
if (i != 25) {
randomNumbers.add(i);
}
}
Collections.shuffle(randomNumbers);
Или на языке Java 8:
List<Integer> randomNumbers = IntStream.rangeClosed(0, 100)
.filter(i -> i != 25) //or any condition you want
.boxed()
.collect(Collectors.toList());
Collections.shuffle(randomNumbers);
Теперь вы можете взять их по одному. Здесь более удобен итератор:
Iterator<Integer> iterator = randomNumbers.iterator();
for (row = 0; row < 10; row++) {
for (int col = 0; col < row; col++) {
matrix[row][col] = iterator.next();
}
}