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 :

generateur de nombre aleatoire(jeu du black jack)


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2012
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Octobre 2012
    Messages : 4
    Par défaut generateur de nombre aleatoire(jeu du black jack)
    Bonjour,

    Je dois écrire un code dans lequel il me faut créer une fonction qui va générer des nombres aléatoires. Le problème c'est :
    aléatoires

    -qu'elle doit utiliser des paramètres d’entrées et de sorties.

    -Elle doit afficher aléatoirement le nom d'une carte et sa valeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // Données utilisées par le programme:
    char Cartes[13] = { 'A', '2', '3', '4', '5', '6', '7', '8', '9', 'X', 'V', 'D', 'R' } ;
    short Valeurs[13] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10 } ;
    
    // Générateur de cartes
    
    short genererCarte( char cartes[], short valeurs[], char &carte, short &points )
    {
    Ici je ne vois pas comment faire. Je ne sais meme pas par ou commencer. Est ce que je dois declarer mo tableau ici? Comment utliser les parametres d entres et sorties??
    }

    Aussi dans le main, on doit creer un premier fichier qui affiche les 100 premieres pairse générées aleatoirement par la fonction et un deuxieme fichier qui affiche les 500 autres.

    Comment faire pour que il y en ai 100? Si on utlise le for, il comptabilise 100 fois de suite la meme valeur. Je suis COM--PLE-TE-MENT PAUMEE. Je debute a peine au fait.


    Merci pour ce qui prendrons le temps de me repondre au plus vite...

  2. #2
    Membre émérite

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Par défaut
    Ce code devrait générer 100 indices aléatoires de 'Cartes' et 'Valeurs' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for (int i=0; i<100; ++i) 
    {
        int randomIndex = std::rand() % 13; // pour un tableau de taille 13
        std::cout << randomIndex << std::endl;
    }
    Si tu veux quelque chose de non-déterministe (séquences d'indices différentes d'une exécution à l'autre) tu peux utiliser std::srand d'une manière similaire (cf l'exemple du lien).

  3. #3
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Au black-jack, on ne génère pas des cartes aléatoirement, mais on bat les cartes de n paquets (ainsi, si 4*n rois sont déjà tombés, on sait qu'il ne peut pas en tomber d'autres). Je te conseille donc de générer un tableau avec tes n paquets, puis d'utiliser std::random_shuffle pour les mélanger.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  4. #4
    Futur Membre du Club
    Inscrit en
    Octobre 2012
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Octobre 2012
    Messages : 4
    Par défaut
    Citation Envoyé par JolyLoic Voir le message
    Au black-jack, on ne génère pas des cartes aléatoirement, mais on bat les cartes de n paquets (ainsi, si 4*n rois sont déjà tombés, on sait qu'il ne peut pas en tomber d'autres). Je te conseille donc de générer un tableau avec tes n paquets, puis d'utiliser std::random_shuffle pour les mélanger.
    Tu dois avoir raison en ce qui concerne les regles du black jack mais la premiere partie de l'exo concerne ce geenrateur de cartes. Les melanges c'est apres. Merci quand meme de l'indication.

  5. #5
    Membre Expert
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Par défaut
    Bonjour,

    personnellement, je génèrerais dans un premier temps toutes les paires possibles dans un tableau unidimensionnel puis j'effectuerais des permutations aléatoires de ce tableau pour obtenir des tirages aléatoires. C'est très facile à mettre en place et à manipuler. Par ailleurs, je pense que tu gagnerais à stocker également les couleurs et à faire un peu de programmation objet, soit en faisant une classe "Carte" ou une classe "Jeu" correspondant à l'ensemble des cartes.

  6. #6
    Futur Membre du Club
    Inscrit en
    Octobre 2012
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Octobre 2012
    Messages : 4
    Par défaut
    Citation Envoyé par Aleph69 Voir le message
    Bonjour,

    personnellement, je génèrerais dans un premier temps toutes les paires possibles dans un tableau unidimensionnel puis j'effectuerais des permutations aléatoires de ce tableau pour obtenir des tirages aléatoires. C'est très facile à mettre en place et à manipuler. Par ailleurs, je pense que tu gagnerais à stocker également les couleurs et à faire un peu de programmation objet, soit en faisant une classe "Carte" ou une classe "Jeu" correspondant à l'ensemble des cartes.
    Bonjour Aleph69,

    je n'ai pas encore fait de programmation objet...
    Ce n'est pas possible d'obtenir des tirages aleatoires avec ce que j'ai fait en modifiant seulement certains trucs?

  7. #7
    Futur Membre du Club
    Inscrit en
    Octobre 2012
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Octobre 2012
    Messages : 4
    Par défaut
    Citation Envoyé par cob59 Voir le message
    Ce code devrait générer 100 indices aléatoires de 'Cartes' et 'Valeurs' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for (int i=0; i<100; ++i) 
    {
        int randomIndex = std::rand() % 13; // pour un tableau de taille 13
        std::cout << randomIndex << std::endl;
    }
    .
    Ok j'ai essayé d'appliquer le rand dans mon code mais je ne comprends pas pourquoi, il n'affiche que nom de la carte A et sa valeur 1. 100 fois de suite...

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    #include<iostream>
    #include<time.h>
    #include<fstream>
    using namespace std;
     
    // Générateur de cartes
     
    short genererCarte( char cartes[], short valeurs[], char &carte, short &points )
    {
    	int i =0;
     
    for (int i=0; i<13; i++)            
    {
    	rand(); }
     
     
    	carte  = cartes[i] ;
    	points = valeurs[i] ;
    	return rand() ;
    }
     
     
    int main()
     
    {
     
    	char  Cartes[13]  = { 'A', '2', '3', '4', '5', '6', '7', '8', '9', 'X', 'V', 'D', 'R' } ;
    	short Valeurs[13] = {  1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  10,  10,  10  } ;
     
    	// Rendre le comportement du programme un peu plus aléatoire
    	srand( unsigned int (time( NULL ) ) ) ; 
     
    	short mesPoints ;
    	char  maCarte ;
    	short monIndice ;
     
    	monIndice = genererCarte( Cartes, Valeurs, maCarte, mesPoints ) ;
     
     
    	//Generer 100 fois
     
    for (int i=0; i<100; i++) 
    {
     
    	cout << "Les resultats sont :" << endl ;
    	cout << "     Carte  = " << maCarte << "     Points = " << mesPoints << endl ;
    }
     
     
    	//fichier carte.text
     
    ifstream fichier("carte.txt", ios::in);  // on ouvre
     
            if(fichier)
            {
     
     
                    fichier.close();//on ferme
            }
            else
                    cerr << "Impossible d'ouvrir le fichier !" << endl;
     
    	system("pause");
    	return 0;}
    Comment stocker 100 valeurs dans un fichiers?

    j

Discussions similaires

  1. Generateur de nombre aleatoires
    Par circe dans le forum Boost
    Réponses: 0
    Dernier message: 04/01/2010, 13h39
  2. Jeu de black jack : montrer les cartes
    Par mamili dans le forum Flash
    Réponses: 1
    Dernier message: 15/12/2008, 08h24
  3. Serveur 1-N pour jeu de Black jack
    Par Salandar dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 24/02/2008, 08h03
  4. Generateur de nombre aleatoire
    Par leywan dans le forum Delphi
    Réponses: 5
    Dernier message: 21/03/2007, 17h10

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