Co dělá funkce srand (time (0)) v C ++?


Nejlepší odpověď

Začněme od začátku, protože víte, že počítač generuje pseudonáhodná čísla nejsou opravdu náhodná, protože jsou založena na nějakém vzorci navrženém programátory. A na základě tohoto vzorce počítač vygeneruje sadu náhodných čísel, jak očekáváme. Jeden způsob, jak o tom přemýšlet, je říci, že počítač začne číst z knihy, která má na každé stránce čísla. Čtením z této knihy může počítač vypadat, že vytváří sekvenci náhodných čísel.

Ale je tu problém: Počítač začne číst z knihy od začátku. Kvůli tomuto počítači bude v programu vždy produkována stejná sada „náhodných“ čísel. Předpokládejme, že pokud někde používáte tento program, řekněte, že hra s kostkami bude mít vždy stejné výsledky a to byste nechtěli.

Řešením tohoto problému by bylo, kdyby počítač začal číst z libovolného místa v knize a ne od začátku. Tomu se říká „ očkování “. Předáním časového argumentu do funkce srand se v podstatě vygeneruje náhodné číslo na základě aktuálního data a času, kvůli kterému se při každém spuštění programu dostanete náhodně, a to není spolehlivé, ale funguje to po většinu času.

Pokud byste použili tento kód, měli byste zahrnoval soubor nahoře < cstdlib pokud není v pořádku. Tento soubor obsahuje definici funkce generování náhodného čísla.

Odpověď

V jazyce C ++, co se stane, když napíšu „návrat“ 1 „v hlavní funkci?

Pokud je příkaz return 1; skutečně spuštěn, způsobí ukončení vašeho programu a vrátí stav 1 do volajícího prostředí. (Mohlo by to vrátit hodnotu 1 do volající funkce, ale C ++ nepovoluje volání main.)

Co to znamená, záleží na prostředí. Jazyk nepřiděluje návratové hodnotě 1 žádný význam. Vyžaduje návrat 0; vrátit stav označující úspěch. Záhlaví , které deklaruje funkci exit(), také definuje makra EXIT\_SUCCESS a EXIT\_FAILURE, které mají zjevnou sémantiku, pokud jsou jejich hodnoty vráceny z main. (Vrácení hodnoty z main je v zásadě ekvivalentní volání exit() se stejnou hodnotou.)

V mnoha systémech , včetně Linuxu, dalších systémů podobných systému UNIX a Windows, návrat 0 označuje úspěch a návrat 1 označuje selhání – ale jiné systémy mají různé konvence. (Zejména OpenVMS používá sudé hodnoty k označení selhání a liché hodnoty k označení úspěchu, takže return 1; by označoval úspěch; běhový modul C má speciální kód pro vytvoření vrátit lichý, tj. úspěšný stav.)

Pokud píšete kód, který je určen pouze pro práci v systémech Linux / UNIX / POSIX, return 1; lze použít k označení, že program selhal – ale return EXIT\_FAILURE; je přenosnější.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *