IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Java Discussion :

Génération d'entiers relatifs


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Par défaut Génération d'entiers relatifs
    Bonjour @ tous !

    Je ne savais pas trop où poster vu qu'il y a pas mal de rubriques!

    Voilà, j'ai un soucis :

    J'aimerais remplir un tableau de 50 cases de manière aléatoire avec des nombres entiers relatifs aléatoires !

    Voici le code qui me pose problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    for(i=0; i<50; i++)
          //Génération d'un indice aléatoire compris entre 0 et 50
    	tmp = (int)(Math.random()*50);
          //Si la case d'indice généré plus tôt est vide
    	if(tab[tmp] == 0)
    	{
          //On la remplit avec un entier positif aléatoire
    		tab[tmp] = (int)(Math.random()*100);
    	}
          //Sinon le nombre d'itérations de la boucle augmente de 1
    	else
    	{
    		i--;
    	}
          // De meme pour les entiers négatifs
    	tmp = (int)(Math.random()*50);
    	if(tab[tmp] == 0)
    	{
    		tab[tmp] = (int)(Math.random()*-100);
    	}
    	else
    	{
    		i--;
    	}
    Problème ce code fonctionne mal, je pense que je rate une erreur grosse comme une maison mais là je sèche ...
    Un peu d'aide serait la bienvenue !

  2. #2
    Membre expérimenté
    Avatar de vahid
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 228
    Par défaut
    Salut
    Essai ceci pour générer un entier entre 0 et 50 inclus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Random r = new Random(Math.random()*10000);
    int number = r.nextInt(51);

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Par défaut
    Je ne veux pas que 50 soit inclus puisque la derniere case du tableau a l'indice 49.

    Le code que j'ai mis ne remplit pas toutes les cases du tableau et je ne comprends pas pourquoi !

  4. #4
    Membre expérimenté
    Avatar de vahid
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 228
    Par défaut
    Peut etre parce que Math.random()*100 ca peut donner 0 si tu le converti en int donc a ce moment la t as l impression que ton tableau ne s'est pas remplit alors qu'il a été remplit avec 0.

    De plus, pour remplir ta case [49], ton Math.random doit tomber sur 0,98 ou plus, ce qui est une probabilité assez rare. Tu devrais vraiment utiliser l'objet random...

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Par défaut
    Bon j'ai fais les modifications :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    int indice=0;
    int i=0;
    Random r = new Random();
    for(i=0; i<50; i++)
    	//Génération d'un indice aléatoire compris entre 0 et 50
    	indice = r.nextInt(50);
    	//Si la case d'indice généré plus tôt est vide
    	if(tab[indice] == 0)
    	{
    		//On la remplit avec un entier positif aléatoire
    		tab[indice] = (int)(Math.random()*72);
    	}
    	//Sinon le nombre d'itérations de la boucle augmente de 1
    	else
    	{
    		i--;
    	}
    	// De meme pour les entiers négatifs
    	indice = r.nextInt(50);
    	if(tab[indice] == 0)
    	{
    		tab[indice] = (int)(Math.random()*-72);
    	}
    	else
    	{
    		i--;
    	}
    Aucun changement, seules 2 ou 3 cases sont différentes de 0 ...

  6. #6
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Je ne comprends pas ton code... Tu es dans une boucle en i++ et tu fais un i-- dans le corps... o_O

    En gros, tu veux un tableau de 50 cases rempli avec des chiffres de -50 à 49?

    Si oui:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    final Random random = new Random();
    int tab[] = new int[50];
    for (int i = 0; i < tab.length; i++) {
    	tab[i] = random.nextInt(100) - 50;
    }

Discussions similaires

  1. Génération de tableau d'entiers et lettres alea : Triage ASC / DESC
    Par Ojiuiookojbezib dans le forum Contribuez
    Réponses: 0
    Dernier message: 02/12/2014, 10h06
  2. Réponses: 4
    Dernier message: 29/03/2011, 10h39
  3. Calcul du plus grand diviseur commun de deux entiers relatifs
    Par odsen.s dans le forum Télécharger
    Réponses: 0
    Dernier message: 30/11/2010, 17h21
  4. Codage des entiers relatifs
    Par CompuTux dans le forum Mathématiques
    Réponses: 9
    Dernier message: 27/01/2010, 19h34
  5. Ecrire ensemble des entiers relatifs en Latex
    Par codepvc dans le forum Débuter
    Réponses: 2
    Dernier message: 22/05/2009, 09h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo