Maison > développement back-end > C++ > Comment générer des nombres aléatoires distincts dans une boucle C ?

Comment générer des nombres aléatoires distincts dans une boucle C ?

DDD
Libérer: 2024-12-09 17:20:12
original
852 Les gens l'ont consulté

How to Generate Distinct Random Numbers in a C   Loop?

Générer des nombres aléatoires distincts dans une boucle en C

En C, écrire du code pour générer des nombres aléatoires dans une boucle peut parfois donner des résultats inattendus . Considérez l'extrait de code suivant :

for (int t = 0; t < 10; t++) {
  int random_x;
  srand(time(NULL));
  random_x = rand() % 100;
  cout << "\nRandom X = " << random_x;
}
Copier après la connexion

Le problème avec ce code réside dans l'utilisation répétée de srand(time(NULL)) dans la boucle. Alors que srand() est utilisé pour initialiser le générateur de nombres aléatoires, l'appeler plusieurs fois au cours de l'itération entraînera la génération de la même séquence de nombres aléatoires.

Pour générer des nombres aléatoires différents à chaque itération, srand( ) ne doit être appelé qu'une seule fois, de préférence au début du programme. Cela garantit que la graine du générateur de nombres aléatoires n'est définie qu'une seule fois, « randomisant » efficacement le point de départ de chaque itération.

int main() {
  srand(time(NULL));
  for (int t = 0; t < 10; t++) {
    int random_x = rand() % 100;
    cout << "\nRandom X = " << random_x;
  }
}
Copier après la connexion

De plus, si vous devez réinitialiser complètement l'initialisation du nombre aléatoire, vous pouvez appelez à nouveau srand() avec une valeur de départ différente. Cela générera une nouvelle séquence de nombres aléatoires, distincte de la précédente.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal