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 :

remplir un tableau par des nombre aléatoires


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 29
    Par défaut remplir un tableau par des nombre aléatoires
    Salut,
    je cherche un exemple de code en langage c permettant de remplir un tableau par des nombres aléatoires.
    il y a la fonction rand(je pense) mais je ne sais pas comment l'utiliser.
    Merci pour votre aide

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 157
    Billets dans le blog
    152
    Par défaut
    Bonjour,

    Le code est très simple, ainsi, je vais te donner les outils pour le faire et tu vas y arriver

    Dans l'idée ( algorithme )
    allouer l'espace mémoire pour le tableau ( avec malloc() ou calloc() )
    faire une boucle pour parcourir toutes les cases du tableau ( un petit for )
    pour chaque case, remplir la case avec une valeur aléatoire ( je précise après )
    Comment on récupère les variables aléatoires ? : en utilisant effectivement rand()
    ( Conseil, lorsque que tu ne sais pas quelque chose à propose d'une fonction, tu peux chercher ( sous les unix avec une commande qui s'apelle man ( exemple man 3 rand ) ) ou sur internet man pages rand ( ou simplement man rand ) )

    D'après la doc, rand renvoie un int , et ne prend rien comme argument.
    Donc
    va remplir r avec une valeurs aléatoires ( et toujours d'après la doc ) comprises entre 0 et RAND_MAX.
    ( RAND_MAX est défini et tu peux l'utiliser comme tu veux ( tu n'as pas trop besoin de savoir sa valeur ).

    Si tu veux un nombre entre 0 et 100 , tu peux faire ( la méthode n'est pas la meilleure ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int r = rand()%100;
    pour un nombre entre 0 et 1 ( float )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    float r = (float)rand()/RAND_MAX;
    Pour utiliser rand() n'oublie pas le #include <stdlib.h>

    Si tu veux que les valeurs soit aléatoires entre plusieurs execution du programme, il faudra redéfinir la graine pour la génération de nombre aléatoire ( voir page de la wikipedia , sur les nombres aléatoires ).
    ( Juste rapidement, un ordinateur ne peut pas donner un nombre 100% aléatoire donc on utilise une graine pour le faire ).
    Celle ci est souvent basé sur le temps, nous pour le faire on fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    srand(time(NULL));
    time(NULL) renvoie le temps
    srand() prend un unsigned int avec la graine
    pour la fonction time il te faudra inclure <time.h>

    Voilà, si tu as des questions n'hésite pas
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    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 logo98 Voir le message
    je cherche un exemple de code en langage c permettant de remplir un tableau par des nombres aléatoires.
    il y a la fonction rand(je pense) mais je ne sais pas comment l'utiliser.
    http://emmanuel-delahaye.developpez....=Page7#LXXXVII

    Fait de ton mieux et poste ton code.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 129
    Par défaut
    C'est pas plutot la bibliothèque time.h qu'il faut pour utiliser les rand() ?

  5. #5
    Expert confirmé
    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
    Par défaut
    rand() et srand() sont déclarées dans <stdlib.h>

  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 Yunchi Voir le message
    C'est pas plutot la bibliothèque time.h qu'il faut pour utiliser les rand() ?
    1 - il n'y a pas de time.h, c'est <time.h>
    2 - <time.h> n'est pas une bibliothèque, mais une interface avec la bibliothèque (en-tête ou header)
    3 - voir la réponse de diogene

  7. #7
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 29
    Par défaut
    Merci pour vos réponses.
    Ci-joint mon code. Est ce qu' il est faisable?Que vous me suggérez?
    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
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main ()
    {
       int i;
     
       srand(50); /* MODIF */
     
          for (i = 0; i < 50; i++)
       {
          int T = rand ()%100;
          printf ("%d ", T);
       }
       printf ("\n");
       return 0;
    }

  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 logo98 Voir le message
    Merci pour vos réponses.
    Ci-joint mon code. Est ce qu' il est faisable?Que vous me suggérez?
    Oui, c'est un peu naïf, mais c'est OK. J'ai déjà donné un lien qui explique comment utiliser correctement ces 2 fonctions (notamment pour ne pas que la suite soit la même à chaque lancement...).

Discussions similaires

  1. [AJAX] Remplir un tableau par des valeurs
    Par creep015 dans le forum AJAX
    Réponses: 1
    Dernier message: 06/04/2010, 12h47
  2. Réponses: 4
    Dernier message: 12/11/2009, 09h58
  3. Remplir un tableau par une référence externe
    Par vodevil dans le forum Langage
    Réponses: 1
    Dernier message: 26/03/2006, 16h00
  4. [MySQL] Remplir un tableau par requêtes sql
    Par Melekitto dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 11/02/2006, 17h30

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