Générer 1 nombre aléatoire sans doublon java

muntu -  
 muntu -
Bonjour,

Je suis nouveau en programmation, est ce que veut bien m'aider à m'expliquer comment générer un nombre aléatoire sans doublon en java.
Au je dois remplir un tableau à deux dimension en java à l'aide d'un random, mais sans doublon. Si le nombre existe déjà dans le tableau je l'enregistre pas.

Merci d'avance.
A voir également:

4 réponses

loupius Messages postés 697 Date d'inscription   Statut Membre Dernière intervention   148
 
Inutile de faire des doublons (j'ai demandé la suppression;-) )
Quelque soit le langage utilisé, la solution est dans la question:
- pour un tableau de n cases, faire une boucle n fois,
- générer un nombre aléatoire,
- si le nombre existe déjà (comparaison avec les cases déjà remplies), relancer la boucle sans incrémentation du nombre de boucles.
Rien de plus simple !
Bonne continuation.
1
muntu
 
Je n'ai pas compris votre démarche, vous pouvez êtes un peu plus explicite svp ?
0
Breub62 Messages postés 2989 Date d'inscription   Statut Membre Dernière intervention   369
 
Je pense que ça l'est assez... Tu sais faire une boucle? Tu sais générer un nombre aléatoire? Tu sais parcourir ton tableau? Par chaque valeur du tableau, tu sais tester si elle est identique au nombre aléatoire généré? Tu sais insérer un nombre dans un tableau? Sinon précise ce qui te pose problème.
Bon courage ;-)
0
muntu
 
mon problème au fait je sais pas trop quoi faire, mais ici j'ai éssayé de me servir d'une fonction de recherche que j'ai trouvé dans le site zéro : ( java-tableau).

Seulement j'ai des zéros partout.


Si vous pouvez m'expliquer ce qui ne va pas dans mon code, ou soit me proposer une solution plus clair et plus pratique.

Merci d'avance.








for(int i=0; i<tab.length; i++)

{
for(int j=0; j<tab[i].length; j++)

{


Random r = new Random();
int valeur = 1 + r.nextInt(9);

tab_test[count] = valeur;

count++;




// for(int l=0; l<tab[i].length; l++)

//{
while((count1 < tab_test.length) && (valeur!= tab_test[count1]))

{
count1++;

if(count1>tab_test.length) {

tab[i][j]= valeur;
}



}







System.out.print(tab[i][j]);



}
System.out.println("");

}
S
0