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; }
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; } }
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!