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 :

probleme avec le random


Sujet :

C++

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 16
    Points : 9
    Points
    9
    Par défaut fonction random c++
    salut,
    j'essaye de faire un petit jeu en c++ en mode console :
    je veux dans un 1er temps saisir 2 chiffres et faire deviner celui du mileu à un autre joueur.
    j'aimerais donc faire une random pour le chiffre à toruver.
    J'ai cherché sur le net mais g pas compris et copier du code tout fais ne m'interesse pas:

    j'ai vu qu'il faut utiliser les bibliothèques suivantes :
    #include<time.h>
    #include<stdlib.h>

    mais apres ils parlent de srand, de std et je ne sais aps ce que c'est et je ne comprends donc pas le code.

    De plus je présnete ça au bts et en fait ela remplit la compétence de langage procédural je ne fais donc pas d'objet mais des boucles et des tableaux.

    Si vous pouviez m'expliquer d'avantage le mécanisme merci ...

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 26
    Points : 25
    Points
    25
    Par défaut
    Si vous acceptez d'utiliser la bibliothèque cstdlib:

    la fonction rand pourrait faire l'affaire.

    elle tire un entier aléatoire entre 0 et RAND_MAX.

    donc double(std::rand())/RAND_MAX) (pour normalisation)* intervalle pour définir l'intervalle de tir.

    si intervalle est 10, ça devrait retourner un entier aléatoire entre 0 et 10.

    srand() propose des aléatoires de meilleures qualités basés, je crois me souvenir, sur l'horloge de la station.

    Mais bon, rand devrait être suffisant.

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    J'ai reussi à faire un petit quelques chose mais le problème c que je veux que le random me sorte un chiffre de 1 à 10 or la il me sort par exmeple 28234
    je vous montre le code dans lequel quelque chose a du m'échapper et qui doit etre la cause de mon problème :

    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
     
    void main()
    {
    int tab_niv1[3];
     
     
    // le 1er est o le dernier est 3-1
     
    cout<<"Entrez le 1er chiffre\n";
    cin>>tab_niv1[0];
     
    cout<<"Entrez le dernier chiffre\n";
    cin>>tab_niv1[2];
     
     
    srand(time(NULL));
    tab_niv1[1] = (rand()/(RAND_MAX / 10)) + 1;         
    cout<<"Nombre aleatoire entre 1 et 10 :\n"<< rand(); // tab_niv1[1];
     
     
    //cout<<tab_niv1<<"\n";
     
    cout<<"Vous devez trouver le chiffre manquant :\n";
    cout<<tab_niv1[0] << " ? " << tab_niv1[2] <<"\n";
     
     
    };

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 26
    Points : 25
    Points
    25
    Par défaut
    Revoir la normalisation.

  5. #5
    Futur Membre du Club
    Inscrit en
    Avril 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    ok bin vraiment merci je vais essayer tout ca !

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Tout ça est expliqué dans la FAQ C , merci d'y penser à l'avenir

    http://c.developpez.com/faq/c/?page=..._random_bornes

  7. #7
    Futur Membre du Club
    Inscrit en
    Avril 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 16
    Points : 9
    Points
    9
    Par défaut probleme avec le random
    je suis allée sur la faq : la fonction rand fonctionne bien puisque j'affiche son resultat qui est toujours différent par contre lorsque j'affiche le random value il est toujours égal a 0 alors que c'est le chiffre que je dois trouver.de plus g pourtant mis la valeur qui doit etre maximale (10) -1 comme dans l'exemple.

    Les formules sur le net varient alors je les ai toutes essayées mais y'a rien à faire!!!

    Pouvez vous me dire ce qui ne va pas?

    merci




    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    //system("cls"); sert à effacer tout ce qui précède 
    srand(time(NULL));
    //result = (rand()/(RAND_MAX/10))+1;
     
    int randomValue = (rand() / RAND_MAX * (10 - 1));
     
     
    cout<<"la valeur du RAND_MAX est de : "<<RAND_MAX<<"\n";
    cout<<"resultat de rand() : "<< rand()<<"\n";
    cout<<"le chiffre a trouver est : "<< randomValue<<"\n";

  8. #8
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    [Sujet fusionné]

    je suis allée sur la faq
    Retournes-y, ton code n'est pas le même. En l'occurence il manque le cast en float.

    Et merci de ne pas recréer un sujet pour le même problème à l'avenir.

  9. #9
    Futur Membre du Club
    Inscrit en
    Avril 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    bin le truc c'est que je sais pas a quoi correspondent ce "int" et ce "float" je viens bien mettre des valeurs mais quoi ? : le N par exemple c'est le nombre maxi .

    Je vais peut être sembler stupide mais c'est quoi un cast ?

  10. #10
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Un cast c'est une conversion. Si tu ne vois pas du tout de quoi je parle tu devrais (fortement) revoir tes bases de C++.

    Le principe ici c'est de convertir au moins l'une des deux opérandes de la division en réel (float). Si on ne le fait pas alors les deux opérandes (rand() et RAND_MAX) seront entières tout comme la division, et le résultat sera quoiqu'il arrive 0. Une fois qu'on a fini on reconvertit en entier (int), puisque c'est ce que l'on veut.

  11. #11
    Futur Membre du Club
    Inscrit en
    Avril 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    ah ok merci. bin disons que je galère en prog mais à l'école on nous a jamais parlé de cast ou quoi on fait de l'objet avec les lcasses l'héritage et tout mais on utilise que des méthodes que l'on fait nous même et on a vu que 3 bibliothèques.

    merci je vais essayer

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

Discussions similaires

  1. Probleme avec random!
    Par ryma87rh dans le forum C++Builder
    Réponses: 13
    Dernier message: 28/03/2009, 12h55
  2. probleme d'accent avec image random
    Par 2click dans le forum Langage
    Réponses: 2
    Dernier message: 11/05/2008, 11h41
  3. Probleme avec 2 random à la suite !
    Par djskynet dans le forum C
    Réponses: 3
    Dernier message: 03/01/2008, 21h42
  4. probleme avec random boolean
    Par petitenovice dans le forum Langage
    Réponses: 2
    Dernier message: 11/12/2006, 09h39
  5. probleme avec la fonction random
    Par kaiko dans le forum C
    Réponses: 16
    Dernier message: 08/12/2006, 15h07

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