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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    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
    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 confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 504
    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
    760
    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 : 760
    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 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    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 : 362
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é
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 295
    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();
    }

  6. #6
    Membre Expert

    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 : 35
    Localisation : France, Doubs (Franche Comté)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 1 391
    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).

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