Comment générer un nombre aléatoire en C++ ?

Comment générer un nombre aléatoire en C++ ? - C++ - Programmation

Marsh Posté le 01-10-2013 à 18:41:20    

Bonjours :hello:  
 
Je suis débutant en C++ (j'en suis aux fonctions :sol: ) et pour m'entrainner aux conditions et boucles je voulais faire un "jeu" sur console mais pour ça il me faut générer un nombre aléatoire.
J'ai déjà fais des recherches et j'ai vu la fonction rand mais seulement en C :(  et je n'ai jamais touché au C (j'ai vu que ça fonctionne pour les deux si on adapte le code).
 
Comment faire en C++ svp ?
 
Merci d’avance  :ange:  
 
KomkHOMBR

Reply

Marsh Posté le 01-10-2013 à 18:41:20   

Reply

Marsh Posté le 01-10-2013 à 19:35:37    

Bonjour !
 
Aucune adaptation n'est nécessaire pour utiliser la fonction "random" du C en  C++.
 
Sinon, pour du C++ "pur", boost::random (mais un peu pointu à utiliser ...).
 
Bonne continuation !

Reply

Marsh Posté le 01-10-2013 à 19:50:40    

Merci !
 
Juste pour en c les "printf" j'ai essayé de les remplacer par un "cout <<" mais ça me met un message d’erreur sur cette ligne ... Dois-je laisser le "printf" ? Parce que c'est moins évident pour la lisibilité.
 
Merci  

Reply

Marsh Posté le 01-10-2013 à 20:15:46    

(désolé pour le double post)
J'ai regardé pour la fonction boost::random mais je ne comprend pas grand chose ...
Ma question est : ai-je les connaissance nécessaires pour comprendre ça (je sais seulement faire tous types de variables avec des calcus des entrées et sorties ... des boucles (while, do...while et for) et des conditions (booléens, if et switch) et je commence à apprendre les fonctions ...) ?

Reply

Marsh Posté le 01-10-2013 à 21:59:01    

Comme je le disais, les bibliothèques de boost sont souvent un peu pointues ... Vous devriez peut-être mettre cette idée de coté dans un premier temps. Quand vous serez plus à l'aise avec certains concepts avancés (templates principalement, pour Boost), vous pourrez y revenir.
 
En revanche, pour le std::cout, je ne saurais trop vous encourager à l'utiliser. En règle générale, faites du vrai C++, pas du C compilé en C++.
 
Bonne continuation !

Reply

Marsh Posté le 01-10-2013 à 23:31:51    

KomkHOMBR' a écrit :

(désolé pour le double post)
J'ai regardé pour la fonction boost::random mais je ne comprend pas grand chose ...
Ma question est : ai-je les connaissance nécessaires pour comprendre ça (je sais seulement faire tous types de variables avec des calcus des entrées et sorties ... des boucles (while, do...while et for) et des conditions (booléens, if et switch) et je commence à apprendre les fonctions ...) ?


 
Non, surtout que boost est assez vilain niveau syntaxique :D
 
Si tu débutes, faire du C++ sous la forme de "C avec des cout" c'est vraiment pas ce que je te recommanderais.
 
Commences par le C, dans ce cas pour le random tu as la fonction rand() qui te renvoi un entier au hasard entre 0 et RAND_MAX (ou MAX_RAND je sais jamais). Elle est dispo dans via stdlib (#include <stdlib.h> ), sinon en C++ tu as boost::random et std::random dispo (C++11 par contre).
 
Sinon, le cout s'utilise comme ça :  

Code :
  1. int main()
  2. {
  3.     int i = 10;
  4.     std::cout<<i<<std::endl; // Ca affichera 10 et fera un retour à la ligne, en C ça serait printf("%i\n",i);
  5.     std::cout<<"Hello World, i = "<<i<<std::endl; // Affichera Hello World, i = 10 avec un retour à la ligne, en C ça serait printf("Hello World, i = %i\n",i);
  6.     std::cout<<"blabla "<<i<<" blabla"; // Affichera blabla 10 blabla, en C ça serait printf("blabla %i blabla", i);
  7. }


 
Le std:: est important avant le cout, cout fait parti du namespace std, tu peux t'en dispenser en écrivant "using namespace std;" mais je ne te le recommande pas. Si tu veux en savoir plus sur les namespaces, tu trouveras des infos dessus en français & en anglais assez facilement sur internet ;)


---------------
Perhaps you don't deserve to breathe
Reply

Marsh Posté le 02-10-2013 à 16:12:15    

KomkHOMBR' a écrit :

Bonjours :hello:  
Comment faire en C++ svp ?
KomkHOMBR

En utilisant les fonctions standard de <random>
 

Code :
  1. #include <iostream>
  2. #include <random>
  3. int main()
  4. {
  5.   const int minimum = 1;
  6.   const int maximum = 10;
  7.   std::uniform_int_distribution<int> distribution(minimum, maximum);
  8.   // entiers répartis au hasard de manière uniforme
  9.   std::default_random_engine generateur;
  10.   const auto tirages = 20; // nb de tirages
  11.   for (auto i = 0; i < tirages; ++i) {
  12.     int nombre = distribution(generateur);
  13.     std::cout << nombre << std::endl;
  14.   }
  15.   return 0;
  16. }


 
A+,


Message édité par gilou le 02-10-2013 à 16:16:39

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 02-10-2013 à 19:55:16    

Merci pour vos réponses !
 
Terminapor, je n'utilise que les cout car je fais du c++ c'est en cherchant le code que j'ai appris que les printf en c étais l'équivalent du cout en c++ (je n'ai jamais fait de c donc je code comme j’apprends en c++) mais merci à toi aussi ;)
 
Je vais donc apprendre à utiliser std::cout
 
Encore merci et a+

Reply

Marsh Posté le 10-10-2013 à 07:25:30    

Terminapor a écrit :


 
Non, surtout que boost est assez vilain niveau syntaxique :D


 
Tellement vilain que boost::random a été standardisé en C++11 sous la forme de std::random :o

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed