Ce face funcția srand (time (0)) în C ++?


Cel mai bun răspuns

Să începem de la început, deoarece știți că computerul generează numere pseudorandom nu cu adevărat aleatorii, deoarece se bazează pe o formulă proiectată de programatori. Și pe baza acestei formule, computerul generează un set de numere aleatorii așa cum ne așteptăm. Un mod de a gândi acest lucru este să spunem că computerul începe să citească dintr-o carte care are numere în interiorul său pe fiecare pagină. Citind din această carte, computerul poate apărea și poate produce o secvență de numere aleatorii.

Dar există o problemă: computerul începe să citească din carte de la început. Din cauza acestui computer, va produce întotdeauna același set de numere „aleatorii” într-un program. Să presupunem că dacă utilizați acest program undeva, spuneți că jocul de lansare a zarurilor va produce întotdeauna aceleași rezultate și nu ați dori acest lucru.

O soluție la această problemă ar fi dacă computerul începe să citească dintr-un loc arbitrar în carte și nu de la început. Ei bine, acest lucru se numește „ însămânțare ”. Prin trecerea argumentului timpului în funcția srand ceea ce face este de fapt generează numărul aleator bazat pe data și ora curente din cauza cărora obțineți diferit aleatoriu de fiecare dată când porniți un program, iar acest lucru nu este fiabil, dar funcționează de cele mai multe ori.

Dacă ați utiliza acest cod, ați avea a inclus un fișier în partea de sus < cstdlib dacă nu este în regulă. Acest fișier conține definiția funcției de generare a numărului aleatoriu.

Răspuns

În C ++, ce se va întâmpla dacă scriu „return” 1 „în funcția principală?

Dacă instrucțiunea return 1; este de fapt executată, programul dvs. se va termina, returnând starea 1 la mediul apelant. (Poate returna o valoare 1 funcției de apelare, dar C ++ nu permite apelarea main.)

Ce înseamnă asta depinde de mediu. Limba nu atribuie nicio semnificație unei valori returnate de 1. Este necesară returnarea 0; pentru a returna un statut care indică succesul. Antetul , care declară funcția exit(), definește și macrocomenzi EXIT\_SUCCESS și EXIT\_FAILURE, care au semantica evidentă dacă valorile lor sunt returnate din main. (Returnarea unei valori din main este în esență echivalentă cu apelarea exit() cu aceeași valoare.)

Pe multe sisteme , inclusiv Linux, alte sisteme asemănătoare UNIX și Windows, returnarea 0 indică succesul și returnarea 1 indică eșecul – dar alte sisteme au convenții diferite. (În special, OpenVMS folosește valori pare pentru a indica eșecul și valori impare pentru a indica succesul, așa că return 1; ar indica succes; timpul de rulare C are un cod special pentru a face return 0; returnează o stare ciudată, adică de succes.)

Dacă scrieți cod care este destinat doar să funcționeze pe sisteme Linux / UNIX / POSIX, return 1; poate fi folosit pentru a indica faptul că programul a eșuat – dar return EXIT\_FAILURE; este mai portabil.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *