Olá Ermin, essa instrução poderia gerar valores maiores do que 400. Qualquer valor no intervalo [380, 400] gerado pelo método random.nextInt(400) e somado com 20, passa o limite superior do intervalo [20, 400]. Para resolver esse problema, a princípio, eu colocaria uma verificação, como segue:
// author: Isaac Sena
// data: out/10
// gerador de números aleatórios
class numRandVerif
{
public static void main( String args[] )
{
int x = 1;
int vectRand[] = new int[5];
System.out.println("\nIntervalo: [20, 50]\n\n" );
for (int i = 0; i < 5 ; i++)
{
int numRand = (int) (Math.random() * 50);
System.out.println("valor de numRand: " + numRand);
if (numRand < 20 ){
numRand = numRand + 20;
System.out.println("O valor gerado foi menor do que o do limite inferior do intervalo, então acrescento + 20: " + numRand);
}
vectRand[i] = numRand;
x = x + i;
System.out.println(x + "º número do vetor: "
+ vectRand[i] + "\n");
x = 1;
} // fim de for
} // fim do método main
} // fim da classe numRandVerif
Neste caso eu coloquei um intervalo menor (a fim de tornar mais provável algum valor menor que o limite inferior).
A saída gerada seria a seguinte:
Intervalo: [20, 50]
valor de numRand: 32
1º número do vetor: 32
valor de numRand: 1
O valor gerado foi menor do que o do limite inferior do intervalo, então acrescento + 20: 21
2º número do vetor: 21
valor de numRand: 44
3º número do vetor: 44
valor de numRand: 0
O valor gerado foi menor do que o do limite inferior do intervalo, então acrescento + 20: 20
4º número do vetor: 20
valor de numRand: 24
5º número do vetor: 24
Abs,
Isaac Sena.