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 :

syntaxe fonction rand


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 31
    Par défaut syntaxe fonction rand
    Bonjour, quelle est la syntaxe de la fonction rand ?

    Pour générer un nombre entre 1 et 10.

    Pour générer une lettre minuscule entre a et z.

    pour générer une lettre majuscule entre A et Z.

    Merci.

  2. #2
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015

  3. #3
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 484
    Par défaut
    C'est à rendre pour quand ?

    Citation Envoyé par mokless Voir le message
    Bonjour, quelle est la syntaxe de la fonction rand ? Pour générer un nombre entre 1 et 10.
    $ man 3 rand
    DESCRIPTION
    The rand() function returns a pseudo-random integer between 0 and RAND_MAX.

    De là, tu utilises le modulo pour resteindre l'intervalle à celui qui t'intéresse.

    Pour générer une lettre minuscule entre a et z.
    pour générer une lettre majuscule entre A et Z.
    Pour rester volontairement évasif, je dirais : « même chose ».

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 31
    Par défaut
    J'ai lu sur un autre site qu'il ne fallait surtout pas utiliser le modulo pour générer des entiers ??

    De plus, comment stocker dans 1 seul variable plusieurs chiffres ou lettres générée par le rand ? (J'utilise une boucle for dont le nombre de cycles est entrer par l'utilisateur)

  5. #5
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 484
    Par défaut
    Citation Envoyé par mokless Voir le message
    J'ai lu sur un autre site qu'il ne fallait surtout pas utiliser le modulo pour générer des entiers ??
    Ce serait vrai si la valeur renvoyée par rand() n'était pas entière elle-même (cas de certains langages, dont la fonction aléatoire renvoie une valeur strictement comprise entre 0 et 1) mais en l'occurence, cette fonction renvoie un toujours un entier, positif ou nul, dans un intervalle connu.

    De plus, comment stocker dans 1 seul variable plusieurs chiffres ou lettres générée par le rand ? (J'utilise une boucle for dont le nombre de cycles est entrer par l'utilisateur)
    Tu utilises plusieurs variables ou, mieux, un tableau.

  6. #6
    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 mokless Voir le message
    Bonjour, quelle est la syntaxe de la fonction rand ?

    Pour générer un nombre entre 1 et 10.

    Pour générer une lettre minuscule entre a et z.

    pour générer une lettre majuscule entre A et Z.
    rand() renvoie une valeur entre 0 et RAND_MAX. Ensuite, il faut un peu d'imagination... C'est plus un problème d'arithmétique que de C.

    Pour le 2 question suivantes, il suffit comme toujours de ramener le problème compliqué à un problème connu :

    - placer les caractères dans un tableau de N éléments
    - tirer un index entre 0 et N-1

    le caractère est alors tableau[index]

    Fait de ton mieux et poste ton code si nécessaire.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 31
    Par défaut
    J'ai réussi à faire une partie de ce que je désirais, voici mon code:

    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
     
     
    srand (time (NULL)); 
     
       printf ("\n\n");
     
       for (i=0; i<nbMaj; i++)
       {
          minAleatoire = 'a'+ rand()%26;
          printf("%c", minAleatoire);
       }
     
       printf ("\n\n");
     
       for (i=0; i<nbMin; i++)
       {
          majAleatoire = 'A'+ rand()%26;
          printf("%c", majAleatoire);
       }
     
    printf ("\n\n");
     
       for (i=0; i<nbChiffre; i++)
       {
          chiffreAleatoire = 1 + rand()%10; 
          printf("%d", chiffreAleatoire);
       }
    nbMin, nbMaj, nbChiffre sont des chiffres entrés par l'utilisateur.

    Mon but est maintenant de créer un mot de passe en puisant aléatoirement (donc avec rand je pense) dans la suite de majuscule, de minuscule, de chiffre crée. Aprés je pensais stocker ce mot de passe dans une variable et ensuite afficher le mot de passe à l'écran.

    Désolé si les explications ne sont pas très claire, j'essaie de faire de mon mieux.

    PS: est-ce que le srand est utile pour ce que je fais ?? j'ai essayer de l'enlever et il ne me semble pas que cela change quelque chose...

    Merci pour toutes vos réponses précédentes et futures!

  8. #8
    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 mokless Voir le message
    J'ai réussi à faire une partie de ce que je désirais, voici mon code:
    Il vaut mieux poster du code qui compile, on perd moins de temps à le vérifier...
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    #include <stdlib.h>
    #include <time.h>
    #include <stdio.h>
     
    int main (void)
    {
       srand (time (NULL));
     
       {
          int nbMin = 4;
          int i;
          for (i = 0; i < nbMin; i++)
          {
             int minAleatoire = 'a' + rand () % 26;
             printf ("%c", minAleatoire);
          }
          printf ("\n");
       }
     
       {
          int nbMaj = 5;
          int i;
          for (i = 0; i < nbMaj; i++)
          {
             int majAleatoire = 'A' + rand () % 26;
             printf ("%c", majAleatoire);
          }
          printf ("\n");
       }
     
       {
          int nbChiffre = 7;
          int i;
          for (i = 0; i < nbChiffre; i++)
          {
             int chiffreAleatoire = 1 + rand () % 10;
             printf ("%d", chiffreAleatoire);
          }
          printf ("\n");
       }
       return 0;
    }
    Attention, la langage C ne garantit pas que les valeurs des caractères autre que '0' à '9' soient consécutives. Ce code n'est pas portable. J'avais pourtant indique une méthode avec un tableau de char et un index tiré au hasard. Je perds mon temps ou quoi ?
    Mon but est maintenant de créer un mot de passe en puisant aléatoirement (donc avec rand je pense) dans la suite de majuscule, de minuscule, de chiffre crée.
    J'ai indiqué la méthode. C'est toujours la même. Maintenant, il faut la mettre en œuvre.

    PS: est-ce que le srand est utile pour ce que je fais ??
    Oui, ça permet que le tirage soit différent à chaque lancement du programme.

    http://emmanuel-delahaye.developpez.com/notes.htm#rand

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 31
    Par défaut
    Avec DEV C++ mon programme compile très bien...

    Je dois faire ce devoir sans utiliser les tableau... Sinon j'aurais suivi ta méthode.

    Merci quand même pour l'aide.

  10. #10
    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 mokless Voir le message
    Avec DEV C++ mon programme compile très bien...
    Merci de vérifier avant de poster :
    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
    29
    30
    31
    32
    33
    34
     
     
    -------------- Build: Debug in hello ---------------
     
    Compiling: main.c
    Linking console executable: bin\Debug\hello.exe
    C:\dev\hello\main.c:3: error: syntax error before '(' token
    C:\dev\hello\main.c:5: error: syntax error before string constant
    C:\dev\hello\main.c:5: warning: type defaults to `int' in declaration of `printf'
    C:\dev\hello\main.c:5: warning: function declaration isn't a prototype
    C:\dev\hello\main.c:5: warning: conflicting types for built-in function 'printf'
    C:\dev\hello\main.c:5: error: ISO C forbids data definition with no type or storage class
    C:\dev\hello\main.c:10: error: syntax error before string constant
    C:\dev\hello\main.c:10: warning: type defaults to `int' in declaration of `printf'
    C:\dev\hello\main.c:10: warning: function declaration isn't a prototype
    C:\dev\hello\main.c:10: error: ISO C forbids data definition with no type or storage class
    C:\dev\hello\main.c:13: error: syntax error before string constant
    C:\dev\hello\main.c:13: warning: type defaults to `int' in declaration of `printf'
    C:\dev\hello\main.c:13: warning: function declaration isn't a prototype
    C:\dev\hello\main.c:13: error: ISO C forbids data definition with no type or storage class
    C:\dev\hello\main.c:18: error: syntax error before string constant
    C:\dev\hello\main.c:18: warning: type defaults to `int' in declaration of `printf'
    C:\dev\hello\main.c:18: warning: function declaration isn't a prototype
    C:\dev\hello\main.c:18: error: ISO C forbids data definition with no type or storage class
    C:\dev\hello\main.c:21: error: syntax error before string constant
    C:\dev\hello\main.c:21: warning: type defaults to `int' in declaration of `printf'
    C:\dev\hello\main.c:21: warning: function declaration isn't a prototype
    C:\dev\hello\main.c:21: error: ISO C forbids data definition with no type or storage class
    C:\dev\hello\main.c:26: error: syntax error before string constant
    C:\dev\hello\main.c:26: warning: type defaults to `int' in declaration of `printf'
    C:\dev\hello\main.c:26: warning: function declaration isn't a prototype
    C:\dev\hello\main.c:26: error: ISO C forbids data definition with no type or storage class
    Process terminated with status 1 (0 minutes, 0 seconds)
    13 errors, 13 warnings
    Joli score pour 27 lignes de code...

    Je dois faire ce devoir sans utiliser les tableau...
    Pourquoi ? C'est imposé ? C'est une complication inutile, je ne sais même pas si c'est possible de manière portable...

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 31
    Par défaut
    je comprend vraiment pas chez moi ca ne détecte aucune erreur et le programme se lance... Enfin...

    Oui c'est une complication inutile mais je suis obligé de trouver une méthode sans utiliser les tableau...

  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 mokless Voir le message
    je comprend vraiment pas chez moi ca ne détecte aucune erreur et le programme se lance... Enfin...
    Regarde ce que tu as posté. ce n'est certainement pas le copié/collé de ton code qui compile chez toi sans erreurs...

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 31
    Par défaut
    Ok je vais regarder merci

Discussions similaires

  1. Verification syntaxe fonction javascript
    Par calitom dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 12/09/2006, 16h02
  2. fonction rand() sur liste ?
    Par debutant-1 dans le forum C
    Réponses: 10
    Dernier message: 24/05/2006, 10h58
  3. Algo de la fonction RAND
    Par booby dans le forum C
    Réponses: 3
    Dernier message: 21/04/2006, 14h25
  4. fonction rand() php
    Par taka10 dans le forum Langage
    Réponses: 5
    Dernier message: 12/04/2006, 13h35
  5. [VB6] [Syntaxe] Fonction renvoyant un tableau d'objets
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 18/10/2002, 15h33

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