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 :

Problème de division


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 111
    Points : 39
    Points
    39
    Par défaut Problème de division
    Bonsoir,

    Je débute en C++ et je bloque sur le problème suivant:générer des nombres aléatoires entre 0 et 1. Pour ce faire, j'utilise la fonction fournissant un résultat compris entre 0 et RAND_MAX; l'idée étant de normer les valeurs obtenues par RAND_MAX. Le code suivant ne fourni que des valeurs nulles:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	double x=rand()/RAND_MAX;
    alors que celui-ci fournit bien des valeurs entre 0 et 1:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	const double factor=1.0/RAND_MAX;
    	double x=rand()*factor;
    D'où vient l'erreur dans le premier code?

    Merci bien.

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Joa,

    rand() et MAX_RAND sont des entiers, donc tu fais une division entière.
    Si les cons volaient, il ferait nuit à midi.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 111
    Points : 39
    Points
    39
    Par défaut
    Merci! Faut-t-il toujours passer par l'artifice utilisé pour le code 2 ou bien peut-on s'en passer?

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Noa,

    Pour avoir une division sur des réels, il faut qu'au moins une des valeurs soit réelle, tu n'as pas le choix.

    Généralement, on écrit plutôt comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	double x=(double)rand()*factor;
    Si les cons volaient, il ferait nuit à midi.

  5. #5
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    double x=static_cast<double>(rand())/RAND_MAX;
    Note que ca te donne du [0, 1] pas du [0, 1)

    Si tu veux dans [0, 1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    double x=rand())/(RAND_MAX+1.0);
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  6. #6
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Hoe,

    Oui, désolé pour le cast, je me croyais dans la section C.
    Si les cons volaient, il ferait nuit à midi.

Discussions similaires

  1. Un problème de division
    Par chxlgs dans le forum Débuter
    Réponses: 3
    Dernier message: 27/02/2008, 12h28
  2. Problème de division
    Par luimême dans le forum Mathématiques
    Réponses: 4
    Dernier message: 04/05/2007, 17h41
  3. Problème de Division
    Par Dlyan dans le forum C++
    Réponses: 5
    Dernier message: 09/03/2006, 15h24
  4. problème de division par 100
    Par trent94 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 16/11/2005, 22h08
  5. [CR8.5] Problème de division par zéro sur formule
    Par franck.cvitrans dans le forum Formules
    Réponses: 3
    Dernier message: 10/06/2004, 13h41

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