Cosa fa la funzione srand (time (0)) in C ++?


Migliore risposta

Cominciamo dallinizio, poiché sai che il computer genera pseudorandom numeri non propriamente casuali poiché si basano su una formula ideata dai programmatori. E in base a quella formula il computer genera un insieme di numeri casuali come ci aspettiamo. Un modo di pensare a questo è dire che il computer inizia a leggere da un libro che contiene numeri su ogni pagina. Leggendo da questo libro, può sembrare che il computer produca una sequenza di numeri casuali.

Ma cè un problema: il computer inizia a leggere dal libro dallinizio. A causa di questo computer produrrà sempre lo stesso insieme di numeri “casuali” in un programma. Supponiamo che se stai usando questo programma da qualche parte diciamo che un gioco di dadi produrrà sempre gli stessi risultati e non lo vorresti.

Una soluzione a questo problema sarebbe se il computer iniziasse a leggere da un punto arbitrario nel libro e non dallinizio. Bene, questo si chiama “ seeding “. Passando largomento time nella funzione srand ciò che fa è fondamentalmente generare il numero casuale in base alla data e allora correnti a causa della quale ottieni un numero casuale diverso ogni volta che avvii un programma, e questo non è affidabile ma funziona per la maggior parte del tempo.

Se usassi questo codice avresti incluso un file in alto < cstdlib se non va bene. Questo file contiene la definizione della funzione di generare il numero casuale.

Risposta

In C ++, cosa succederà se scrivo “return 1 “nella funzione principale?

Se listruzione return 1; viene effettivamente eseguita, il programma verrà terminato, restituendo uno stato di 1 allambiente chiamante. (Potrebbe restituire un valore di 1 alla funzione chiamante, ma C ++ non consente di chiamare main.)

Ciò che significa dipende dallambiente. La lingua non assegna alcun significato a un valore di ritorno di 1. Richiede di restituire 0; per restituire uno stato che indica il successo. Lintestazione , che dichiara la funzione exit(), definisce anche le macro EXIT\_SUCCESS e EXIT\_FAILURE, che hanno la semantica ovvia se i loro valori vengono restituiti da main. (La restituzione di un valore da main è essenzialmente equivalente alla chiamata di exit() con lo stesso valore.)

Su molti sistemi , inclusi Linux, altri sistemi simili a UNIX e Windows, return 0 denota successo e return 1 denota fallimento, ma altri sistemi hanno convenzioni diverse. (In particolare, OpenVMS utilizza valori pari per indicare lerrore e valori dispari per indicare il successo, quindi return 1; indica il successo; il runtime C ha un codice speciale per creare return 0; restituisce uno stato dispari, ovvero riuscito.)

Se stai scrivendo codice destinato a funzionare solo su sistemi Linux / UNIX / POSIX, return 1; può essere utilizzato per indicare che il programma non è riuscito, ma return EXIT\_FAILURE; è più portabile.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *