Nombres AlÉAtoires
Une question? Pas de panique, on va vous aider! Ce sujet est fermé. [Besoin d'aide]
9 décembre 2017 à 16:44:34
Bonjour tout le monde. Je débute depuis quelques mois le C à l'école, et j'aurai besoins d'aide pour un programme étant donner que mon prof est inaccessible. Je cherche a générer deux nombre totalement random entre 1 et 10. Une âme charitable pour m'aider? Merci
9 décembre 2017 à 17:17:04
Bonjour à toi,
Utilise la fonction rand() dans stdlib. h qui te renvoie un nombre entier aléatoire. Pour avoir, 10 nombre possible entre 0 et 9 utilise cette formule:
int n = rand()%10; // nombre entre 0 et 9
Puis pour obtenir un nombre entre 1 et 10:
int n = rand()%10 + 1; // nombre entre 1 et 10
Au début de ton programme tu peux initialiser la génération de nombre pseudo-aléatoire par la fonction time():
#include
Entier Aléatoire C L
Comme vous le savez, le reste de la division entière par donne un nombre entre 0 et n -1. Pour obtenir un nombre aléatoire entre 1 et 10, il suffit d'ajouter 1 au résultat obtenu au point précédent. Commençons par obtenir un nombre flottant entre 0 et 1. Si l'on convertit le résultat de rand() en float et qu'on le divise par RAND_MAX (i. En C, comment tirer un nombre aléatoire dans un intervalle ?. e. la plus grande valeur possible), le résultat sera un nombre flottant compris entre 0 et 1. Pour obtenir un flottant entre 0 et 10, il suffit simplement de multiplier ce résultat par 10. Appliquons la méthode du point précédent afin d'obtenir un nombre flottant entre 0 et 2. En lui soustrayant 1, on obtient à présent un flottant entre -1 et 1. 16 17 18 19 20 21 22 23 24 25 26 srand ( time ( NULL)); // entiers entre 0 et 9 cout << rand ()% 10 << endl; // entiers entre 1 et 10 cout << 1 + ( rand ()% 10) << endl; // flottants entre 0 et 10 // rand(): entier entre 0 et RAND_MAX // float(rand()): flottant entre 0 et RAND_MAX // float(rand()) / RAND_MAX: flottant entre 0 et 1 cout << float ( rand ()) / RAND_MAX * 10 << endl; // flottants entre -1 et 1 cout << ( float ( rand ()) / RAND_MAX * 2) - 1 << endl; return 0;}
Entier Aléatoire C.L
I. Introduction ▲ Pour commencer, je tiens à rectifier le titre de ce tutoriel. En effet avec un ordinateur il est impossible de générer une suite de nombres réellement aléatoires, nous devrons nous contenter de nombres pseudoaléatoires. Je vais donc vous proposer plusieurs méthodes, de la plus simple à la plus compliquée, pour obtenir une série de nombres difficilement déterminable à l'avance (dite plus communément aléatoire). II. Les fonctions du C ▲ Avant de nous lancer dans la pratique, voici une brève description des fonctions permettant d'obtenir un nombre pseudoaléatoire en C. Ces fonctions sont déclarées dans stdlib. h. II-A. Entier aléatoire c.l. rand ▲ Prototype: Sélectionnez int rand ( void); C'est cette fonction qui retourne un nombre aléatoire à chaque appel. Ce nombre est compris entre 0 et RAND_MAX. II-B. srand ▲ Prototype: Sélectionnez void srand ( unsigned int seed); La fonction srand permet d'initialiser le générateur de nombres pseudoaléatoires avec une graine différente (1 par défaut). Elle ne doit être appelée qu'une seule fois avant tout appel à rand.
Nous retrouvons dans le cas le même problème d'initialisation de la série aléatoire que précédemment avec rand(). Pour initialiser la série, il faut fournir un paramètre au moteur de génération. Par exemple le temps. Si vous voulez le faire avec la bibliothèque chrono (standard C++11), voici le code à écrire, en n'oubliant pas l'include: #include
Enfin, pour simplifier les tirages, on peut utiliser bind (standard). Entier aléatoire c l. Voici le code à écrire, ne pas oublier l'include #include . Ce code n'apporte rien au tirage lui-même, mais peut vous simplifier la vie pour les appels. Finissons avec une implémentation d'une classe Dé à 6 faces. Faites rouler le dé et vous obtenez un tirage aléatoire 😉 Conclusion D'un façon générale, la bibliothèque random du C++11 est bien meilleure en terme d'aléatoire que la bonne vieille fonction rand(). Mais elle propose surtout beaucoup plus de possibilités de paramétrage. En utilisant ce qui est déjà configuré en terme de moteur et de distribution, vous avez de quoi couvrir pas mal de besoins.