La création de nombres aléatoires avec pas de doublons

Dans ce cas, le MAX n'est que de 5, donc j'ai pu vérifier les doublons, un par un, mais comment pourrais-je le faire de façon plus simple? Par exemple, si le MAX est équipé d'une valeur de 20?
Merci.

int MAX = 5;

for (i = 1 , i <= MAX; i++)
{
        drawNum[1] = (int)(Math.random()*MAX)+1;

        while (drawNum[2] == drawNum[1])
        {
             drawNum[2] = (int)(Math.random()*MAX)+1;
        }
        while ((drawNum[3] == drawNum[1]) || (drawNum[3] == drawNum[2]) )
        {
             drawNum[3] = (int)(Math.random()*MAX)+1;
        }
        while ((drawNum[4] == drawNum[1]) || (drawNum[4] == drawNum[2]) || (drawNum[4] == drawNum[3]) )
        {
             drawNum[4] = (int)(Math.random()*MAX)+1;
        }
        while ((drawNum[5] == drawNum[1]) ||
               (drawNum[5] == drawNum[2]) ||
               (drawNum[5] == drawNum[3]) ||
               (drawNum[5] == drawNum[4]) )
        {
             drawNum[5] = (int)(Math.random()*MAX)+1;
        }

}
  • Beaucoup de (pseudo) des générateurs de nombres aléatoires ne le répétez pas pour leur "cycle". Le problème est, bien sûr, que l'ensemble de leur "cycle" est des milliards ou des milliers de milliards de valeurs, et les valeurs qu'ils produisent peuvent être l'un de ceux des milliards ou des milliers de milliards de valeurs. Vous pourriez en théorie de produire un générateur de nombre aléatoire qui a eu un "cycle" de 5 ou 10 ou que ce soit, mais il est probablement le plus d'ennuis que cela vaut la peine.
  • Également un générateur de nombre aléatoire qui permet de ne pas répéter ce qui est encore "moins" aléatoire: si MAX=5 et que vous lisez les 3 numéros, vous pouvez deviner le prochain avec une probabilité de 50%, si vous lisez 4 numéros, vous savez la prochaine pour sûr à 100%!
  • Répondu sur un double de la question ici
  • Voir aussi Génération de Nombres Aléatoires en Java
  • Double Possible de Comment avez-vous efficacement pour générer une liste de K de non-répétition des entiers compris entre 0 et une limite supérieure N