Well, you must make some modifications to the code
When you use the Check method, the cycle you set with For is done 4 times since "numeros.length" will always be equal to 4, and this is not necessary (or in fact gives unexpected behavior in the program ), in fact it would only be necessary to check, the values that until that moment are assigned in the array, now to know this, we would pass a third argument to this method, the variable "i". With this we will have to modify the method, in specific the Boolean operators must be inverted (since if we do not do it the first value assigned to "num" will return false.) The method would remain as follows:
public static boolean Comprobar(int numeros[], int num, int i){
boolean igual = true;
for(int j = 0; j<i; j++){
if(numeros[j] == num){
igual = false;
}
}return igual;
}
Now when you send to call the method Check, only consider, the situation in which a true was returned, but in case of a false we should reassign a quantity to "num", it can be like this to redo the same step of the cycle:
if(Comprobar(numeros,num,i)==true){
numeros[i] = num;
} else i--;
Notice the third argument in the method.
As a last comment, I consider that the formula you assign to "num" would be enough with this:
int num = minimo + rnd.nextInt(maximo);
Luck.