2 votes

Comment générer aléatoirement un nombre unique à partir d'un tableau en Java ?

Je veux générer des nombres à partir d'un tableau de façon aléatoire, et chaque nombre doit être unique, je donne le morceau de code. Merci de m'aider, et s'il vous plaît ne me suggérez pas arraylist, car je construis pour une application blackberry, et l'api blackberry ne supporte pas arraylist ou collection ou hashset, donc s'il vous plaît suggérez-moi avec array seulement dans ce morceau de code.

 Random rgen = new Random();  // Random number generator

    //--- Initialize the array 
    for (int i=0; i<20; i++) {
        quesNum[i] = i;
    }

//--- Mélanger en échangeant chaque élément de manière aléatoire

   for (int i=0; i< 20; i++) {
        int randomPosition = rgen.nextInt(20);

        int temp = quesNum[i];

        quesNum[i] = quesNum[randomPosition];

        quesNum[randomPosition] = temp;

    }

4voto

Jon Skeet Points 692016

Votre code est presque correct tel quel, mais vous devriez utiliser une version modifiée de Le remaniement Fisher-Yates au lieu de cela :

for (int i=0; i < 20; i++) {
    // Partition the array into "shuffled" at the start
    // and "unshuffled" at the end. Select a random
    // unshuffled one, and swap it with the one at the
    // border of shuffled/unshuffled
    int randomPosition = i + rgen.nextInt(20 - i);
    int temp = quesNum[i];
    quesNum[i] = quesNum[randomPosition];
    quesNum[randomPosition] = temp;
}

Votre question n'était pas très claire - validation que vous pensiez dans la bonne direction ? Si cette réponse ne vous aide pas, veuillez préciser votre question (idéalement sans abréviations en langage courant).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X