Que fait la fonction srand (time (0)) en C ++?


Meilleure réponse

Commençons simplement par le début, car vous savez que lordinateur génère nombres pseudo-aléatoires pas vraiment aléatoires puisquils sont basés sur une formule conçue par les programmeurs. Et sur la base de cette formule, lordinateur génère un ensemble de nombres aléatoires comme prévu. Une façon de penser à cela est de dire que lordinateur commence à lire un livre qui contient des numéros sur chaque page. En lisant ce livre, lordinateur peut sembler produire une séquence de nombres aléatoires.

Mais il y a un problème: lordinateur commence à lire le livre depuis le début. À cause de cet ordinateur, il produira toujours le même ensemble de nombres «aléatoires» dans un programme. Supposons que si vous utilisez ce programme quelque part, disons un jeu de dés, il produira toujours les mêmes résultats et vous ne voudriez pas cela.

Une solution à ce problème serait si lordinateur commence à lire à partir dun endroit arbitraire dans le livre et non depuis le début. Eh bien, cela sappelle «  ensemencement « . En passant largument de temps dans la fonction srand , il génère essentiellement le nombre aléatoire basé sur la date et lheure actuelles à cause desquelles vous obtenez différents aléatoires chaque fois que vous démarrez un programme, et ce nest pas fiable mais fonctionne la plupart du temps.

Si vous utilisiez ce code, vous auriez inclus un fichier en haut < cstdlib si ce nest pas grave. Ce fichier contient la définition de la fonction de génération du nombre aléatoire.

Réponse

En C ++, que se passera-t-il si jécris « return 1 « dans la fonction principale?

Si linstruction return 1; est effectivement exécutée, cela entraînera larrêt de votre programme, renvoyant un statut de 1 à lenvironnement dappel. (Il peut renvoyer la valeur 1 à la fonction appelante, mais C ++ ne permet pas d’appeler main.)

Ce que cela signifie dépend de l’environnement. La langue nattribue aucune signification à une valeur de retour de 1. Elle nécessite le retour de 0; pour renvoyer un état indiquant une réussite. Len-tête , qui déclare la fonction exit(), définit également les macros EXIT\_SUCCESS et EXIT\_FAILURE, qui ont la sémantique évidente si leurs valeurs sont renvoyées par main. (Renvoyer une valeur de main équivaut essentiellement à appeler exit() avec la même valeur.)

Sur de nombreux systèmes , y compris Linux, dautres systèmes de type UNIX et Windows, return 0 indique le succès et le retour 1 indique léchec – mais dautres systèmes ont des conventions différentes. (En particulier, OpenVMS utilise des valeurs paires pour indiquer léchec et des valeurs impaires pour indiquer le succès, donc return 1; indiquerait le succès; le runtime C a un code spécial pour rendre return 0; renvoie un statut impair, cest-à-dire réussi.)

Si vous écrivez du code destiné uniquement à fonctionner sur les systèmes Linux / UNIX / POSIX, return 1; peut être utilisé pour indiquer que le programme a échoué – mais return EXIT\_FAILURE; est plus portable.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *