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 :

Fonctions aléatoires pour caractères


Sujet :

C

  1. #1
    IDE
    IDE est déconnecté
    Membre éclairé Avatar de IDE
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    238
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 238
    Par défaut Fonctions aléatoires pour caractères
    Bonjour à tous,

    Je me demande si vous ne pourriez-pas me dire ou je dois aller pour avoir de la documentation sur les fonctions aléatoires, car je dois donner un nom aléatoire à un fichier, mais je ne vois nulle par ou l'on parle de caractères, merci pour vos infos.

    Michael

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par IDE
    Je me demande si vous ne pourriez-pas me dire ou je dois aller pour avoir de la documentation sur les fonctions aléatoires, car je dois donner un nom aléatoire à un fichier, mais je ne vois nulle par ou l'on parle de caractères, merci pour vos infos.
    Bah, il suffit de mettre des caractères dans une chaine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char const s[] = "ABCDEF";
    et de tirer un indice entre 0 et sizeof s - 1...

    ensuite, le caractère est s[indice]...

  3. #3
    IDE
    IDE est déconnecté
    Membre éclairé Avatar de IDE
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    238
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 238
    Par défaut Suite
    Merci Emmanuel, j'ai l'impression d'être ton boulet

    Michael.

  4. #4
    IDE
    IDE est déconnecté
    Membre éclairé Avatar de IDE
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    238
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 238
    Par défaut Suite
    J'ai essayé de faire celci mais sa ne fonctionne pas, mais je m'en doutais également

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    char const s[] = "ABCDEF";
    int i;
     
    for ( i=0 ; i < 5 ; i++ )
    {
     
     s[i] = rand();
     
     printf("%c",s[i]);
     
    }
    si quelqu'un pourrait m'aider un peu merci

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    2 choses :

    • a) rand() est une fonction qui :

      • 1) doit être initialisée par srand
      • 2) prend une valeur entre 0 et RAND_MAX


    • b) les caractères ASCII sont en fait des chiffres qui se suivent, et, si me souvenirs sont bons , les majuscules (donc A) commence à 65 et les minuscules (donc a) à 97 .


    voir

    http://c.developpez.com/faq/c/?page=...#NOMBRES_srand

    et

    http://nicolasj.developpez.com/articles/libc/hasard/



    Donc, le principe est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Initialiser la fonction
    calculer un lancer aléatoire, et le convertir entre 0 et 51 par une règle de 3
    si valeur > 25 
           ajouter (valeur-26) à 97
    sinon 
           ajouter valeur à 65

  6. #6
    IDE
    IDE est déconnecté
    Membre éclairé Avatar de IDE
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    238
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 238
    Par défaut Suite
    Merci pour ta réponse, c'est bien sympa, je vais essayer de regarder cela.

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    j'ai ajouté 2 liens et corrigé 2 trucs..

  8. #8
    IDE
    IDE est déconnecté
    Membre éclairé Avatar de IDE
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    238
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 238
    Par défaut Suite
    Impeccable, merci

  9. #9
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par souviron34
    • b) les caractères ASCII sont en fait des chiffres qui se suivent, et, si me souvenirs sont bons , les majuscules (donc A) commence à 65 et les minuscules (donc a) à 97 .
    Oui, mais personne n'a parlé d'ASCII, mais de caractères tout court. Restons portable.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
       char const s[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
       char filename[8 + 1];
       size_t i;
     
       for (i = 0; i < sizeof filename - 1; i++)
       {
          /* naif mais suffisant pour demarrer */
          filename[i] = s[rand () % (sizeof s - 1)];
       }
       filename[i] = 0;
     
       printf ("filename = '%s'\n", filename);

  10. #10
    Inactif  

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    534
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 534
    Par défaut
    Salut,

    "srand", c'est parfois utile avant "rand", qu'en pensez-vous ?

  11. #11
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par dj.motte
    Salut,

    "srand", c'est parfois utile avant "rand", qu'en pensez-vous ?
    Je suis d'accord avec toi.

  12. #12
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par dj.motte
    "srand", c'est parfois utile avant "rand", qu'en pensez-vous ?
    Oui, et ?

  13. #13
    Inactif  

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    534
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 534
    Par défaut
    Salut,

    Dans certain cas il faut initialiser le générateur de nombres pseudo-aléatoires avec "srand". Par exemple ?

  14. #14
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Oui, et ?
    c'est juste que tu as oublié le srand dans ton exemple..

  15. #15
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par souviron34
    c'est juste que tu as oublié le srand dans ton exemple..
    Je l'ai pas oublié. L'initialisation se fait une fois au début du code, donc ailleurs...

Discussions similaires

  1. Fonction Aléatoire pour URL
    Par hackoofr dans le forum VBScript
    Réponses: 1
    Dernier message: 15/10/2012, 22h04
  2. fonction escape() pour caractères non spéciaux
    Par jaljal dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 04/06/2010, 22h26
  3. Fonction REPLACE() pour le caractère "
    Par snoopy69 dans le forum VBA Access
    Réponses: 4
    Dernier message: 10/12/2007, 10h05
  4. Fonction à utiliser pour remplacer les accents et autres caractères
    Par Christophe Charron dans le forum Langage
    Réponses: 2
    Dernier message: 05/08/2007, 12h50
  5. Fonction split pour chaines de caractères
    Par Munkey74 dans le forum Langage
    Réponses: 6
    Dernier message: 05/06/2007, 21h34

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