Introduction au générateur de nombres aléatoires en C ++

Plusieurs fois dans notre programmation, il se produit une situation pour générer des nombres au hasard. Par exemple, jeu de dés, distribution de cartes aux joueurs, applications pour mélanger les chansons, etc. Pour gérer ces choses, nous devrions avoir quelques utilitaires. En C ++, nous avons deux utilitaires pour réaliser cette génération de nombres aléatoires. Tout d'abord, nous allons examiner ces fonctions, comprendre leurs besoins. Plus tard, nous les utiliserons dans notre code pour obtenir la fonctionnalité. Commençons donc par les fonctions et la bibliothèque à laquelle il est associé. Dans cette rubrique, nous allons découvrir le générateur de nombres aléatoires en C ++.

Comment générer un nombre aléatoire?

Pour réaliser la génération de nombres aléatoires, C ++ fournit les utilitaires. Nous savons tous que la plupart des fonctions intégrées sont incluses dans le fichier d'en-tête de C ++. Un tel fichier d'en-tête est stdlib.h. C'est une bibliothèque standard ayant de nombreuses fonctions intégrées comme EXIT_FAILURE, EXIT_SUCCESS, RAND_MAX, NULL, etc. En utilisant ces fonctions, nous pouvons facilement obtenir la solution requise. Nous n'avons pas besoin d'écrire une longue logique pour en sortir. Au lieu de cela, nous pouvons simplement appeler l'une de ces fonctions intégrées selon nos besoins. De même, pour réaliser une génération de nombres aléatoires, nous avons deux fonctions intégrées. Ils sont randomisés et rand. En utilisant les deux en combinaison, nous pouvons obtenir le résultat souhaité.

Voyons quelles sont ces fonctions au fond.

  • randomize () - Cette fonction est chargée de générer un nombre aléatoire à chaque fois que vous exécutez le programme. Le résultat sera unique à chaque exécution du code. Cette sortie unique nous fait davantage compter sur cette fonction. Par exemple, la première fois que vous exécuterez le code, il générera la sortie sera comme 75, 23, 56, 24, 5, 21, 76, 32, 20 et 37. La prochaine fois, il générera la sortie comme suit: 5, 64, 51, 78, 94, 53, 41, 19, 96 et 52. Nous verrons comment la sortie sera avec et sans utiliser cette fonction, en écrivant du code dans la section suivante.
  • rand () - Pour générer les nombres de 0 à RAND_MAX-1, nous utiliserons cette fonction. Ici, RAND_MAX signifie la plage maximale possible du nombre. Disons que nous devons générer des nombres aléatoires dans la plage de 0 à 99, puis la valeur de RAND_MAX sera 100. En fonction du besoin de l'application que nous voulons construire, la valeur de RAND_MAX est choisie. Par exemple, si c'est un jeu de dés, alors le RAND_MAX sera 6. Si c'est un jeu de cartes, alors RAND_MAX sera 52, etc.

N'oubliez pas que les deux fonctions sont déclarées dans la bibliothèque standard stdlib.h. N'oubliez donc pas d'inclure ce fichier d'en-tête dans votre code. Voyons maintenant comment nous pouvons écrire un simple programme générateur de nombres aléatoires.

Exemple avec étapes

Maintenant que nous avons une idée du fonctionnement de la fonction de génération de nombres aléatoires, écrivons un programme de base qui va générer un nombre aléatoire et imprimer la sortie.

Écrivons le programme étape par étape pour mieux comprendre le fonctionnement.

  • La première étape consistera à inclure les deux fichiers d'en-tête nécessaires au programme. Le premier si le h doit inclure les fonctionnalités d'entrée et de sortie. Il s'agit du fichier d'en-tête de flux d'entrée-sortie. Le deuxième fichier d'en-tête important est stdlib.h. Comme discuté précédemment, cette bibliothèque standard contient les deux fonctions, rand et randomize. Incluez-les donc au début du code.

#include
#include
using namespace std;

  • Maintenant que nous avons inclus les fichiers d'en-tête, l'étape suivante consiste à écrire la fonction principale pour l'exécution du code. Définir la fonction principale dans la partie suivante.

int main( )
(
)

  • Déclarez un nombre à contenir et imprimez la valeur du nombre aléatoire. Le type de données sera du type int et donnera n'importe quel nom.

int number;

  • Nous avons besoin d'un compteur de boucles pour incrémenter les valeurs dans la boucle. Déclarez donc l'index i, de type int. La valeur maximale d'incrément que nous définirons dans la boucle for .

int i;

  • Nous allons maintenant écrire une boucle for, pour imprimer les valeurs du nombre généré aléatoirement. Pour des raisons de simplicité, nous imprimons 10 numéros. Le nombre maximal d'incréments sera donc de 10.

for(i = 1; i <= 10; i++)
(
)

  • A l'intérieur de la boucle, nous écrirons la fonction rand. Le code ci-dessous nous indique que tout nombre aléatoire généré sera divisé par 100 et le reste est pris. Cela signifie que les nombres imprimés seront compris entre 0 et 99. Si vous voulez des plages plus élevées, le nombre de modules sera différent. C'est au lieu de 100 que nous pouvons placer, 150, 200, 100, etc.

number = rand() % 100;

  • Dans la dernière étape, nous imprimerons le numéro généré, en utilisant cout.

cout << number << "\t";

  • La sortie du code est comme ci-dessous. Veuillez garder à l'esprit que vous pouvez obtenir une sortie différente, car son générateur de nombres aléatoires.

  • Le problème avec le code ci-dessus est que chaque fois que nous l'exécutons, le code obtient le même ensemble de sortie. Pour éviter cela, nous devons utiliser le srand () Ici, nous référons l'heure à cette instance et générons les nouvelles valeurs chaque fois que nous exécutons le programme.

Regardons le code complet avec la fonction srand.

#include
#include
using namespace std;
int main( )
(
int number;
int i;
srand(time(0));
for(i = 1; i <= 10; i++)
(
number = rand() % 100;
cout << number << "\t";
)
)

Deux sorties d'exécution du code:

Première exécution:

Deuxième exécution:

  • Ci-dessous se trouve le code pour générer 5 nombres aléatoires dans 1000. Changez la valeur du nombre et voyez la sortie générée à chaque fois. Comparez les différences d'utilisation non signée et sans utilisation.

#include
#include
#include
int main ()
(
int i, number;
time_t nTime;
number = 5;
srand((unsigned) time(&nTime));
printf("Random numbers are: \n");
for( i = 0 ; i < number ; i++ )
(
printf("%d\n", rand() % 1000);
)
return(0);
)

Production:

Pour 1 ère itération

Pour la 2 ème itération

Conclusion - Générateur de nombres aléatoires en C ++

Dans cet article, nous avons appris ce qu'est un générateur de nombres aléatoires, les besoins du générateur de nombres aléatoires, les fonctions intégrées de C ++ pour y parvenir, avec et sans utiliser la fonction randomize, l'importance de la bibliothèque standard stdlib.h, des instructions pas à pas écrire le code et enfin comparer les sorties de deux approches différentes.

Articles recommandés

Ceci est un guide du générateur de nombres aléatoires en C ++. Ici, nous discutons Comment générer un nombre aléatoire ainsi que des exemples et des étapes. Vous pouvez également consulter l'article suivant pour en savoir plus -

  1. Modificateurs d'accès en C ++
  2. Générateur de nombres aléatoires en Python
  3. Générateur de nombres aléatoires en R
  4. Variables en C ++
  5. Modificateurs d'accès en PHP
  6. Générateur de nombres aléatoires en C #
  7. Les 11 principales fonctionnalités et avantages de C ++
  8. Exemples de fonctions intégrées Python