Hva gjør funksjonen srand (tid (0)) i C ++?


Beste svaret

La oss bare starte fra begynnelsen, som du vet at datamaskinen genererer pseudorandom tall er ikke helt tilfeldige siden de er basert på en formel designet av programmererne. Og basert på den formelen genererer datamaskinen sett med tilfeldige tall som vi forventer. En måte å tenke på dette er at datamaskinen begynner å lese fra en bok som har tall på hver side. Ved å lese fra denne boken, kan datamaskiner vises, slik at de produserer en rekke tilfeldige tall.

Men det er et problem: Datamaskinen begynner å lese fra boken fra begynnelsen. På grunn av denne datamaskinen vil alltid produsere det samme settet med «tilfeldige» tall i et program. Anta at hvis du bruker dette programmet et sted, si et terningkast, vil det alltid gi de samme resultatene, og du vil ikke ha det.

En løsning på dette problemet vil være hvis datamaskinen begynner å lese fra et vilkårlig sted. i boka og ikke fra begynnelsen. Vel, dette kalles “ såing ”. Ved å overføre tidsargumentet til funksjonen srand genererer det det i utgangspunktet tilfeldig tall basert på gjeldende dato og klokkeslett på grunn av hvilket du blir annerledes tilfeldig hver gang du starter et program, og dette er ikke pålitelig, men fungerer for det meste.

Hvis du brukte denne koden, ville du ha inkluderte en fil øverst < cstdlib hvis ikke det er greit. Denne filen inneholder funksjonens definisjon av å generere det tilfeldige tallet.

Svar

I C ++, hva vil skje hvis jeg skriver «return 1 «i hovedfunksjonen?

Hvis return 1; -uttalelsen faktisk blir utført, vil det føre til at programmet ditt avsluttes, og returnerer statusen 1 til kallemiljøet. (Det kan gi verdien 1 til anropsfunksjonen, men C ++ tillater ikke å ringe main.)

Hva dette betyr, avhenger av miljøet. Språket tildeler ingen returverdier på 1. Det krever retur 0; for å returnere en status som indikerer suksess. Overskriften , som erklærer exit() -funksjonen, definerer også makroer EXIT\_SUCCESS og EXIT\_FAILURE, som har den åpenbare semantikken hvis verdiene deres returneres fra main. (Å returnere en verdi fra main tilsvarer egentlig å ringe exit() med samme verdi.)

På mange systemer , inkludert Linux, andre UNIX-lignende systemer og Windows, betegner retur 0 suksess og retur 1 betegner feil – men andre systemer har forskjellige konvensjoner. (Spesielt bruker OpenVMS jevne verdier for å betegne feil og odde verdier for å betegne suksess, så return 1; vil indikere suksess; C-kjøretiden har en spesiell kode for å gjøre return 0; returnerer en merkelig, dvs. vellykket, status.)

Hvis du skriver kode som bare er ment å fungere på Linux / UNIX / POSIX-systemer, return 1; kan brukes til å indikere at programmet mislyktes – men return EXIT\_FAILURE; er mer bærbart.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *