Random Numbers

Eu estou usando a classe SecureNumbe do pacote java.secure para obter um número aleatória nas minhas variáveis. meu seguinte código ta desse jeito:

SecureRandom randomNumber = new SecureRandom();
int value1 = 1 + randomNumber.nextInt(5);
int value2 = 1 + randomNumber.nextInt(5);
int value3 = 1 + randomNumber.nextInt(5);
int value4 = 1 + randomNumber.nextInt(5);
int value5 = 1 + randomNumber.nextInt(5);

System.out.println(value1 + " " + value2 + " " + value3 + " " + value4 + " " + value5); // output do resultado

eu quero saber como é o algorítimo para que cada variável tenha o valor diferente e que não se repita o mesmo número. Deveria usar uma estrutura de repetição como o for ou o while?

nextInt(5) retorna um número entre 0 e 4, e ao somar 1, você está sempre gerando um número entre 1 e 5. Esse intervalo de valores é a única coisa que é garantida, mas cada chamada é “independente” e nada garante que um número não se repetirá nas chamadas seguintes.

No seu caso, como só existem 5 valores possíveis e você quer todos, então entendo que na verdade você quer embaralhar os números de 1 a 5.

Sendo assim, veja aqui como fazer (basta adaptar o código para considerar apenas os números de 1 a 5).

1 curtida