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 :

Nombre aléatoire en C


Sujet :

C

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Nombre aléatoire en C
    Bonsoir, je dois générer un nombre aléatoire a deux chiffres. J'y arrive car à la compilation, pas d'erreurs, mais il me sort tout le temps le même nombre: 41 ... Pourquoi et comment remédier à cela ?

    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
    #include <stdio.h>
    #include <Windows.h>
    #include <time.h>
     
    int nb_chiffre=0;
    char reponse;
    int i = 0;
    int nombre_aleatoire = 0;
     
    void main(void)
    {
    	for(i=0; i<100; i++)
    	{
            nombre_aleatoire = rand();
            i++;
    	}
    	debut:
    	printf("Nombre de chiffres du nombre aleatoire\n");
    	printf("Tapez 1 pour 2 chiffres\nTapez 2 pour 3 chiffres \nTapez 3 pour 4 chiffres\n");
    	scanf("%i", &nb_chiffre);
    	system("cls");
    	printf("Voulez vous continuer ? (o/n)\n");
    	scanf("%c", &reponse);
    	printf("Le chiffre aleatoire est: %i\n", nombre_aleatoire);
    	if (getchar() == 'o')
    	{
    		goto debut;
    	}
    	return;
    }

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 073
    Points : 12 119
    Points
    12 119
    Par défaut
    1- RTFM http://www.cplusplus.com/reference/cstdlib/rand/
    Le passage sur srand, c'est pas pour la déco.

    2- Non mais, t'es un grand malade d'utiliser un goto sur ce type de code. Les boucles while, c'est pas pour la décoration non plus. l'assembleur c'est ni du C ni du C++.
    Ton goto, tu le mets bien au chaud derrière l'oreille, ET TU L'OUBLIE.

    3- C'est du C, pas du C++, donc pas "#inlude <stdio.h>" mais "#inlude <cstdio.h>"
    et le tirage aléatoire en C++, c'est par ici :
    http://www.cplusplus.com/reference/r..._distribution/

  3. #3
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 739
    Points : 3 627
    Points
    3 627
    Par défaut
    Ne pas du tout utiliser <stdio.h>/<cstdio> serait mieux: <iostream> (std::cout et std::cin).

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Tu t'es pas trompé de forum ? T'es sûr que tu voulais pas poster ça sur le forum C ?
    Parce que là concrètement, le fait que ce soit du C++, y'a que dans le titre du topic que ça transparait.
    Nom : Iwr1PFA.jpg
Affichages : 329
Taille : 88,4 Ko
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    pour la bonne cause, je poste un exemple de code c++. Ainsi, Thib78 pourra voir un peu la différence entre C et C++, et constater que ce sont deux langages bien distincts.
    Ce code tire 10 fois un nombre aléatoire entre 1 et 6 et l'affiche dans la console:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <iostream>
    #include <random>
     
    void main()
    {
    	std::default_random_engine generator;
    	std::uniform_int_distribution<int> distribution(1, 6);
     
    	for (int i = 0; i < 10; ++i)
    		std::cout << distribution(generator) << std::endl;
     
    	std::getchar();
    }
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  6. #6
    En attente de confirmation mail

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Doubs (Franche Comté)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 1 391
    Points : 3 311
    Points
    3 311
    Par défaut
    @rod: Ton code tire surtout toujours les mêmes nombres ... Initialiser la graine de ton générateur en utilisant random_device serait mieux. (Et au passage, le retour de main c'est int pas void).

  7. #7
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Et il ne faut pas utiliser getchar(), mais get avec ignore et tout le toutim.
    Et il faut utiliser '\n' à la place de endl.
    Et il faut encapsuler le générateur au cas où veuille modifier son comportement.
    Et il faut commenter le code parce que celui qui viendra après il risque de ne pas comprendre.
    Et il faut gérer les exceptions au cas où il n'y a pas assez de mémoire disponible.
    Et il faut gérer le cas de la coupure de courant.
    ...
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 073
    Points : 12 119
    Points
    12 119
    Par défaut
    Et il faut gérer les exceptions au cas où il n'y a pas assez de mémoire disponible.
    HEIN?
    RAII est là pour ça et la génération de dump fait bien plus qu'un log à 2 balles.

  9. #9
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Août 2008
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Août 2008
    Messages : 282
    Points : 939
    Points
    939
    Par défaut
    Citation Envoyé par r0d Voir le message
    Et il faut gérer le cas de la coupure de courant.

    Et c'est du vécu
    poke 1024,0; poke 214,214

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 073
    Points : 12 119
    Points
    12 119
    Par défaut
    L'UPS est mon ami.

  11. #11
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Si, si je me suis trompé dans le titre de mon post et par la meme occasion de forum, c est bien du C que je fais...

  12. #12
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 073
    Points : 12 119
    Points
    12 119
    Par défaut
    Alors, bon voyage vers le pays magique où les pointeurs sont nos amis.

Discussions similaires

  1. p'tite question de cryptage ( nombre aléatoire )
    Par smyley dans le forum Algorithmes et structures de données
    Réponses: 53
    Dernier message: 08/11/2004, 10h07
  2. Nombres aléatoires
    Par Mat 74 dans le forum Assembleur
    Réponses: 20
    Dernier message: 29/08/2004, 13h31
  3. recherche algo de génération de nombre aléatoire
    Par Pascale38 dans le forum MFC
    Réponses: 2
    Dernier message: 26/01/2004, 14h20
  4. Nombre aléatoire en SQL
    Par sqlnet dans le forum Langage SQL
    Réponses: 8
    Dernier message: 19/08/2003, 12h38
  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