random number generator c
Ce didacticiel décrit en détail l'utilisation des fonctions rand () et srand () pour générer des nombres aléatoires en C ++:
Plusieurs fois, nous avons besoin d'utiliser des nombres aléatoires dans notre application pour produire des simulations ou des jeux et d'autres applications qui nécessitent des événements aléatoires.
Par exemple, dans un jeu de dés, sans avoir d'événements aléatoires, nous aurons le même côté à chaque fois que nous lançons les dés, donnant ainsi des résultats indésirables.
Il devient donc nécessaire que nous ayons un générateur de nombres aléatoires à notre disposition. Dans l'environnement physique, nous pouvons générer des événements aléatoires, mais ce n'est pas possible pour les ordinateurs.
=> Lisez la série de formations Easy C ++.
C'est parce que tout dans les ordinateurs est binaire, c'est-à-dire 0 ou 1 (vrai ou faux) et rien entre les deux. Ainsi, les ordinateurs génèrent généralement des événements prévisibles et ne sont pas en mesure de générer des événements aléatoires.
Au lieu de cela, les ordinateurs simulent le caractère aléatoire, ce qui est fait en utilisant générateur de nombres pseudo-aléatoires (PRNG) . C ++ a un générateur de nombres aléatoires et peut être utilisé avec de nombreuses applications.
Dans ce tutoriel, nous discuterons en détail des fonctions / approches pour générer des nombres aléatoires en C ++.
Ce que vous apprendrez:
- Générateur de nombres pseudo-aléatoires (PRNG) en C ++
- Fonctions rand et srand en C ++
- Différence entre rand () et srand ()
- Flottant aléatoire C ++
- Nombre aléatoire C ++ entre 0 et 1
- Nombre aléatoire C ++ entre 1 et 10
- Questions fréquemment posées
- Conclusion
- lecture recommandée
Générateur de nombres pseudo-aléatoires (PRNG) en C ++
En général, un générateur de nombres pseudo-aléatoires (PRNG) peut être défini comme un programme qui prend une graine ou un nombre de départ et le transforme en un autre nombre différent de la graine à l'aide d'opérations mathématiques.
Ce processus est effectué à plusieurs reprises en prenant le dernier numéro généré à chaque fois. Chaque fois que le nombre généré n'est pas lié aux numéros précédents. Ainsi, ce programme est capable de générer une série de nombres qui semblent aléatoires.
Le langage C ++ est livré avec un générateur de nombres pseudo-aléatoires intégré et fournit deux fonctions rand () et srand () qui peuvent être utilisées pour générer des nombres aléatoires.
Discutons de ces deux fonctions en détail.
application où vous pouvez télécharger des vidéos youtube
Fonctions rand et srand en C ++
srand ()
Prototype de fonction: void srand (graine int non signée);
Paramètres: seed - Une valeur entière à utiliser comme graine par l'algorithme générateur de nombres pseudo-aléatoires.
Valeur de retour: Aucun
Description: La fonction srand est utilisée pour initialiser la séquence de nombres pseudo-aléatoires avec un paramètre appelé «graine aléatoire». Cela rend la sortie de la fonction rand aléatoire. Sinon, la sortie de la fonction rand () sera la même à chaque fois que nous l'appelons.
Ainsi, si nous ensemencons le générateur de nombres aléatoires avec la fonction srand (), il démarrera le générateur à partir du point qui dépend de la valeur d'argument passée à srand. Si nous définissons le générateur de nombres aléatoires avec l'heure système Par exemple, avant le premier appel à la fonction rand (), alors elle générera les nombres aléatoires à chaque fois que nous exécuterons le programme.
Notez que nous devons généralement appeler la fonction srand () une seule fois avant l'appel à la fonction rand () et pas à chaque fois que nous générons des nombres aléatoires.
rand ()
Prototype de fonction: int rand (vide);
Paramètres: aucun
Valeur de retour: Une valeur entière entre 0 et RAND_MAX.
Description: La fonction rand () génère le prochain nombre aléatoire dans la séquence. Le nombre généré est l'entier pseudo-aléatoire compris entre 0 et RAND_MAX. RAND_MAX est une constante dans l'en-tête généralement définie sur la valeur 32767.
#include #include #include int main() { std::srand(static_cast(std::time(nullptr))); for (int count=1; count <= 100; ++count) { std::cout << std::rand() << ' '; // display 5 random numbers per row if (count % 5 == 0) std::cout << '
'; } return 0; }
Production:
Dans le programme ci-dessus, nous avons généré les 100 premiers nombres aléatoires, en donnant l'horloge système comme graine pour la fonction srand. Dans ce programme, nous avons utilisé à la fois les fonctions srand et rand. Notez qu'en raison de l'horloge système comme valeur de départ, la sortie générée sera différente à chaque fois que nous exécutons le programme.
Différence entre rand () et srand ()
rangée() | srand () |
---|---|
Utilisé pour générer des nombres aléatoires. | Amorce le PRNG utilisé par la fonction rand (). |
Appelé autant de fois que nous le souhaitons pour générer les nombres aléatoires. | Appelé une seule fois pour voir le générateur de nombres aléatoires. |
Ne prend aucun argument. | Prend le paramètre utilisé pour amorcer le générateur de nombres aléatoires. |
Renvoie la séquence de nombres aléatoires à chaque appel. | Ne renvoie pas de valeur. |
Flottant aléatoire C ++
La fonction rand () que nous avons vue ci-dessus renvoie par défaut une valeur entière qui peut provoquer un débordement dans certains cas. Ainsi, nous pouvons utiliser float ou double value. Nous pouvons générer des nombres aléatoires flottants en convertissant la valeur de retour de la fonction rand () en «float».
Ainsi, ce qui suit va générer un nombre aléatoire entre float 0.0 et 1.0 (tous deux inclus).
cout< De même, la ligne ci-dessous générera un nombre aléatoire entre 1,2 et 3,4
cout<<1.2 + static_cast (rand()) / ( static_cast (RAND_MAX/(3.4-1.2)));
Dans notre exemple suivant ci-dessous, nous utilisons un flottant aléatoire pour générer la sortie.
Nombre aléatoire C ++ entre 0 et 1
Nous pouvons utiliser la fonction srand () et rand () pour générer des nombres aléatoires entre 0 et 1. Notez que nous devons convertir la sortie de la fonction rand () en valeur décimale flottante ou double.
La valeur de retour par défaut de la fonction rand (), c'est-à-dire un entier, est inadéquate pour afficher des nombres aléatoires entre 0 et 1 qui sont des fractions.
Le programme C ++ donné ci-dessous affiche les cinq premiers nombres aléatoires entre 0 et 1.
Entretien avec devops Engineer Questions et réponses
#include #include using namespace std; int main() { cout<<'Random numbers generated between 0 and 1:'< Production :

On voit que la sortie du programme est le nombre aléatoire entre 0 et 1 qui sont des fractions.
Si nous ne convertissons pas la valeur de retour de la fonction rand () en float ou en double, alors nous obtiendrons 0 comme nombre aléatoire.
Nombre aléatoire C ++ entre 1 et 10
L'exemple suivant consiste à générer des nombres aléatoires entre 1 et 10. Voici le programme C ++ qui génère des nombres aléatoires.
Nous appelons la fonction srand avec l'horloge système puis appelons la fonction rand avec les opérateurs du module 10.
#include #include #include using namespace std; int main() { srand(time(0)); // Initialize random number generator. cout<<'Random numbers generated between 1 and 10:'< Production:

Dans le programme ci-dessus, nous générons les 10 premiers nombres aléatoires entre 1 et 10. Notez que chaque fois que le programme est exécuté, il générera différents ensembles de nombres à cause de l'appel de la fonction srand.
Questions fréquemment posées
Q # 1) Quel est le fichier d'en-tête pour la fonction aléatoire en C ++?
Répondre: Les fonctions pour générer des nombres aléatoires, rand et srand sont définies dans< cstdlib > en-tête de C ++.
Q # 2) Qu'est-ce que Rand_max en C ++?
Réponse: RAND_MAX est une constante dans l'en-tête généralement définie sur la valeur 32767. Le générateur de nombres pseudo-aléatoires (PRNG) génère des nombres aléatoires entre 0 et RAND_MAX.
Q # 3) Comment fonctionne la fonction aléatoire?
Répondre: C ++ prend en charge deux fonctions aléatoires, à savoir srand () et rand (). La fonction srand () amorce le générateur de nombres aléatoires utilisé par la fonction rand () qui génère la séquence de nombres aléatoires en fonction de la graine initiale fournie.
Q # 4) Comment évoluez-vous avec le temps?
Répondre: La fonction srand amorce le générateur de nombres pseudo-aléatoires (PRNG) utilisé par la fonction rand (). C'est une pratique courante d'utiliser le résultat d'un appel à l'heure (0) comme valeur de départ. Cette fonction de temps renvoie la valeur, un nombre de secondes depuis 00:00 heures, le 1er janvier 1970, UTC (horodatage UNIX actuel).
Ainsi, la valeur de la graine change à chaque seconde. Par conséquent, chaque fois que srand est appelé avec la fonction de temps, un nouvel ensemble de nombres aléatoires est généré.
Conclusion
Nous avons discuté en détail de la génération de nombres aléatoires dans ce didacticiel. Les langages de programmation ou en général les ordinateurs ne génèrent pas de nombres aléatoires car ils sont conçus pour donner une sortie prédictive. Par conséquent, nous devons simuler le caractère aléatoire.
Afin de simuler le caractère aléatoire, nous utilisons le générateur de nombres pseudo-aléatoires (PRNG) qui est intégré en C ++. Ainsi, en utilisant les deux fonctions, rand () et srand (), nous pouvons générer des nombres aléatoires en C ++.
La fonction srand () est utilisée pour fournir des graines pour générer des nombres aléatoires tandis que la fonction rand () génère le prochain nombre aléatoire dans la séquence.
=> Recherchez la série complète de formations C ++ ici.
lecture recommandée
- Générateur de nombres aléatoires C # et de chaînes aléatoires C # avec exemples de code
- Tutoriel sur les fonctions principales de Python avec des exemples pratiques
- Tutoriel Unix Pipes: Pipes dans la programmation Unix
- Récursivité en C ++
- Fonctions Friend en C ++
- Polymorphisme en C ++
- Programmation orientée objet en C ++
- OOP Java: Introduction à la programmation orientée objet en Java