Mit csinál az srand (time (0)) függvény a C ++ nyelven?


Legjobb válasz

Kezdjük az elejétől, mivel tudod, hogy a számítógép generál pszeudorandom számok nem igazán véletlenszerűek, mivel a programozók által tervezett valamilyen képleten alapulnak. Ezen a képleten alapulva a számítógép véletlenszerű számok készítését generálja, amire számítunk. Az egyik gondolkodásmód az, hogy a számítógép egy könyvből kezd olvasni, amelynek minden oldalán számok vannak. Ebből a könyvből olvasva megjelenhet a számítógép, amely véletlenszerű számok sorozatát állítja elő.

De van egy probléma: A számítógép a kezdetektől kezdve olvas a könyvből. Emiatt a számítógép mindig ugyanazokat a „véletlenszerű” számokat állítja elő egy programban. Tegyük fel, hogy ha valahol ezt a programot használja, akkor mondjon egy dobókocka játékkal, mindig ugyanazokat az eredményeket hozza, és Ön ezt nem szeretné.

A probléma megoldása az lenne, ha a számítógép önkényes helyről kezdene olvasni a könyvben és nem a kezdetektől fogva. Nos, ezt „ magvetés ” -nak hívják. Azáltal, hogy az idő argumentumot átadja a srand függvénynek, alapvetően a véletlenszámot generálja. az aktuális dátum és idő alapján, amelyek miatt minden program indításakor különböző véletlenszerűségeket kap, ez azonban nem megbízható, de az idő nagy részében működik.

Ha ezt a kódot használta volna, fájlot tartalmazott a tetején < cstdlib , ha nem is baj. Ez a fájl tartalmazza a függvény definícióját a véletlenszám előállításáról.

Válasz

C ++ nyelven mi fog történni, ha írok “return” 1 “a fő funkcióban?

Ha a return 1; utasítás valóban végrehajtásra kerül, a program leáll, és 1-es állapotot ad vissza a hívó környezetbe. (Visszaadhatja az 1 értéket a hívó függvénynek, de a C ++ nem engedélyezi a main hívást.)

Ez mit jelent, a környezettől függ. A nyelv nem tulajdonít jelentést az 1-es visszatérési értéknek. a sikert jelző állapot visszaadásához. A fejléc, amely a exit() függvényt deklarálja, meghatározza a EXIT\_SUCCESS és EXIT\_FAILURE, amelyek nyilvánvaló szemantikával bírnak, ha értékeik visszaadódnak a mainból. (A (z) main érték visszaadása lényegében egyenértékű a exit() azonos értékű hívásával.)

Sok rendszeren , beleértve a Linuxot, más UNIX-szerű rendszereket és a Windows-ot is, a 0-as eredmény a sikert, az 1-es pedig a kudarcot jelöli – de más rendszerek eltérő szokásokkal rendelkeznek. (Különösen az OpenVMS páros értékeket használ a kudarc, a páratlan értékeket pedig a siker jelölésére, így a return 1; a sikert jelzi; a C futási idő speciális kóddal rendelkezik, hogy return 0; páratlan, azaz sikeres állapotot ad vissza.)

Ha olyan kódot ír, amely csak Linux / UNIX / POSIX rendszereken használható, return 1; segítségével jelezhetjük, hogy a program nem sikerült, de a return EXIT\_FAILURE; sokkal hordozhatóbb.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük