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++Builder Discussion :

Nombre aléatoire et déclaration de la fonction


Sujet :

C++Builder

  1. #1
    Membre extrêmement actif Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    2 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 2 037
    Par défaut Nombre aléatoire et déclaration de la fonction
    bonjour,

    Je souhaite utiliser RandomRange pour générer un nombre aléatoire compris entre 10000000 et 99999999.

    pour ce faire j'ai mis ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Randomize(); Label7->Caption = RandomRange(10000000,99999999);
    j'ai déclaré le fichier math.h

    MAIS:
    Si j'ajoute écrit de toutes les manières du monde ca me dit que le fichier (system) ne peut être ouvert

    et quand je compile on me dit "E2268 Appel à une fonction non définie RandomRange"....

    Si je regarde l'aide de Random, je vois uniquement Math de nécessaire... math.h est "includé"

    Je suis perdu

    Merci par avance

  2. #2
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 36
    Par défaut
    Bonjours ;

    tu peut utiliser randomize() et random(int) ('r' sans majiscule) qui sont dans stdlib.h

    tu n'aura pas besoin de inclure system.h ou math.h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    randomize();
    int i= 10000+random(99999);// te génère un int entre 10000 et 99999
    @ +

  3. #3
    Membre extrêmement actif Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    2 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 2 037
    Par défaut
    merci beaucoup ! c'est tres simple comme ca en plus !

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 149
    Par défaut
    Bonjour,
    Pour faire suite à ce message, j'aimerais avoir quelques informations complémentaires.
    Comme il est dit plus haut:
    Bonjours ;

    tu peut utiliser randomize() et random(int) ('r' sans majiscule) qui sont dans stdlib.h

    tu n'aura pas besoin de inclure system.h ou math.h

    Code :


    randomize();
    int i= 10000+random(99999);// te génère un int entre 10000 et 99999


    @ +
    il suffit de faire cela.
    Oui mais si on veut faire cela avec un interval allant de 1 à 100 ?
    Je suis désolé de posé cette question de débuttant mais j'avoue qu' autant le code est simple autant il m'est difficile de cerné ici la notion d'interval.
    J'aurais plutot penché sur un rand(0, 100); mais bon si ca doit être fait autrement.
    Donnez moi quelques précisions si cela est possible.
    Merci d'avance.
    Cordialement.

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Comme l'explique la doc, random(N) renvoie une valeur comprise entre 0 et N-1, c'est à dire [ 0 ... N [.

    Si on doit respecter un intervalle [min ... max], dans ce cas, à la plus petite valeur (min) on ajoute une valeur aléatoire de 0 à (max - min + 1) puisque random borne en (N-1).

    Donc pour générer de 1 à 100 :

    min = 1
    max = 100
    borne de random = max - min + 1 = 100

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int r = 1 + random(100); // 1 + [0 .. 99]
    Donc pour générer de 10000 à 19999 :

    min = 10000
    max = 19999
    borne de random = max - min + 1 = 10000

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int r = 10000 + random(10000); // 10000 + [0 .. 9999]
    A plus !

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 149
    Par défaut
    Effectivement.
    Mais alors si je programme quelque chose comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    int ValAlea, Min, Max;
     
    //Ici je met le code qui affectera par un case la valeur à Max pour 4, 6, 8, 10, 20, 100.
     
    Min = 1; //Valeur minimal du dès.
     
    ValAlea = Min + random(Max);
     
    Text1->Caption = ValAlea;
    Ca devrais fonctionné.
    faut t il inclure des fichiers pour que cela fonctionne ?

  7. #7
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Pour random :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #include <stdlib.h>
    A plus !

  8. #8
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 351
    Par défaut
    Citation Envoyé par Draner Voir le message
    Effectivement.
    Mais alors si je programme quelque chose comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    int ValAlea, Min, Max;
     
    //Ici je met le code qui affectera par un case la valeur à Max pour 4, 6, 8, 10, 20, 100.
     
    Min = 1; //Valeur minimal du dès.
     
    ValAlea = Min + random(Max);
     
    Text1->Caption = ValAlea;
    Ca devrais fonctionné.
    faut t il inclure des fichiers pour que cela fonctionne ?
    C'est juste parce que tu as le cas spécial où Min=1. Si tu veux une vraie fonction généralisée qui te génère un nombre entre Min et Max (compris), alors tu devrais utiliser:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int ValAlea, Min, Max;
    
    //Ici je met le code qui affectera par un case la valeur à Max pour 4, 6, 8, 10, 20, 100.
    
    Min = 1; //Valeur minimal du dès.
    
    ValAlea = Min + random(Max-Min+1);
    
    Text1->Caption = ValAlea;

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/04/2010, 17h43
  2. Réponses: 8
    Dernier message: 15/07/2008, 13h00
  3. défaut des fonctions de génération de nombres aléatoire type rand()
    Par Christophe30 dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 17/02/2008, 20h21
  4. Réponses: 8
    Dernier message: 02/12/2005, 18h07
  5. Générer un nombre aléatoire entre 0 et 1 (INCLUS !!!)
    Par haypo dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 22/08/2002, 16h30

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