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

 C Discussion :

[rand] Générer un mot.. pseudo aléatoirement


Sujet :

C

  1. #1
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut [rand] Générer un mot.. pseudo aléatoirement
    Bonjour,

    Pour l'un de mes projets universitaire, j'ai pour sujet de faire la comparaison de deux textes afin de récupérer la séquence commune la plus grande.

    Pour ce programme, j'ai souhaité générer aléatoirement des mots dont la taille serait saisie au lancement.

    Cependant, je n'arrive pas à obtenir des " rand() " différents.

    Pourriez vous jeter un oeil à mon code pour m'expliquer ce qui ne va pas ?

    Voici une archive contenant mon code
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  2. #2
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    srand() ne doit être appelé qu'une fois, en général au début du programme. Il sert à initialiser le générateur aléatoire avec la "graine" spécifiée en argument.

    Tu l'as mis dans la boucle for de integerGeneration(). Celle-ci s'exécute si rapidement que time(NULL) renvoie toujours la même valeur et le générateur esr réinitialisé toujpours à la même valeur.
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  3. #3
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    Salut.

    D'après ce que j'ai vu au premier coup d'œil :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    /**
     * Function returning the position of the letter
     *   who was crossed by parameter               
     *@param char letter, the letter                
     *@return int, the position of the letter in the alphabet
     */ 
    int getPositionByLetter(char letter){                    
      //to do                                                
      letter=letter;                                         
      return 0;                                              
    }
    Cette fonction est censée te renvoyer sous la forme d'un int la position dans l'alphabet d'une lettre si j'ai bien compris. Seulement cette fonction renvoie toujours 0, donc toujours la même position ...

    Edit : je viens aussi de m'apercevoir que cette fonction n'est pas utilisé ...
    Pour régler le problème du srand, comme l'a expliqué diogene : enlève le de ta fonction integerGeneration () et met le au début du programme (dans le main).

  4. #4
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Bonjour,

    diogene,

    Donc je dois "externaliser" le srand...
    Est-ce une bonne façon de le faire dans le main ?

    ok.Idriss

    Cette fonction n'est pas encor implémentée à vrai dire ^^
    Du fait que je n'en ai pas besoin (mais que je comptais me faire une mini librairie plus ou moins complète) je n'ai pas encor écrit son code.
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  5. #5
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Donc je dois "externaliser" le srand...
    Est-ce une bonne façon de le faire dans le main ?
    Du moment que tu appelles srand une fois seulement et ni plus ni moins dans ton programme et que cet appel se fait avant la première utilisation de rand, c'est bon. Donc tu peux faire l'appel dans main si l'appel remplit ces conditions.

    A part ça, appeler exit juste devant le return de main est absolument inutile, tu peux l'enlever.

  6. #6
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    mon exit, enfin tout le code qui n'est pas commenté dans le else, c'est pour le débug.

    Il me suffit d'ajouter ou enlever un slash pour que j'obtienne mon code "en production" ou mon code "en debug"
    à la base, je n'avais pas ce système pour commenter/décommenter

    edit : ok, j'ai compris ce que tu voulais dire ^^
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  7. #7
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    J'ai donc fait la modification ( archive du premier lien mise à jour)

    Cependant, bien qu'il me génère deux mots différents, il me génère les même mots d'un lancement du programme à un autre.

    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
     
    sasa@sasaki:/media/Lapinator/Complexite/_Sources/test$ ./rand 5 10
     
    word: nwlrb
    word: bmqbhcdarz
    Words :
    	nwlrb
    	bmqbhcdarz
     
    sasa@sasaki:/media/Lapinator/Complexite/_Sources/test$ ./rand 5 10
     
    word: nwlrb
    word: bmqbhcdarz
    Words :
    	nwlrb
    	bmqbhcdarz
    Puisque la graine est basée sur l'heure, ne devrais-je pas obtenir des résultats différents ?
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  8. #8
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Puisque la graine est basée sur l'heure, ne devrais-je pas obtenir des résultats différents ?
    Exact, sauf que tu as oublié d'appeler srand (ou randInitialize) ...

  9. #9
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    ... Tout à fait -_-"

    Maintenant, je n'ai plus de répétition sauf si je lance le programme moins d'une second après.

    Ce qui n'arrivera pas ^^

    Merci beaucoup pour votre aide et vos remarques :3
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème pour générer un mot aléatoire
    Par nekcorp dans le forum Général Python
    Réponses: 2
    Dernier message: 10/05/2014, 17h41
  2. Générer 10 mots aléatoires à partir d'un csv
    Par killerbot dans le forum C
    Réponses: 9
    Dernier message: 07/01/2014, 12h53
  3. [Tableaux] Générer un mot de passe avec rand();
    Par Shuriskn dans le forum Langage
    Réponses: 7
    Dernier message: 21/11/2008, 07h22
  4. [Nombres pseudo-aléatoires]Génération de bits
    Par kaisse dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 25/02/2004, 20h12

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