Hirdetés
- Hobby elektronika
- A Transcend lehet a RAM-para következő áldozata?
- 3D nyomtatás
- AMD Navi Radeon™ RX 9xxx sorozat
- Rogyásig pakolható a Cooler Master Cosmos szériás csúcsháza
- Milyen videókártyát?
- 5.1, 7.1 és gamer fejhallgatók
- Projektor topic
- Több száz játékban kezdi meg karrierjét az FSR Redstone
- Apple asztali gépek
Új hozzászólás Aktív témák
-
Chipi333
csendes tag
válasz
shinodas
#3206
üzenetére
Az srand( time(NULL) ) beállítja a random fv kezdeti értékét az aktuális időre. A rand() pedig generál egy véletlenszámot (ami nem annyira véletlen). A %9 azért kell hogy 0-8 intervallumra és ne az int telje értékkészletére generáljon.
Az srand( time(NULL) ) azért kell mert a rand fv egyébként teljesen determinisztikus, szóval azonos kezdeti értékről indítva mindig ugyanazt a sorozatot generálná. Ezért általában az idő alapján szokás indítani, mert az jó eséllyel minden futtatáskor más lesz.Szerk.: De sokakat megmozgatott ez a téma

-
Karma
félisten
válasz
shinodas
#3206
üzenetére
Az egész mögött egy pszeudo-véletlenszám generátor van, ami egy kezdőérték (seed) alapján generál számokat. (Nem valódi véletlenszámok, de ez most mindegy.)
A srand függvény szolgál ennek a seed értéknek a beállítására. A time(NULL) függvény az aktuális rendszeridőt adja vissza egy egész szám formájában (1970. január 1. óta eltelt másodpercek száma); ha ezt adod meg seednek, gyakorlatilag minden másodpercben más véletlenszámokat kapsz.
Azonos seed mellett meg ugyanazok a számsorozat jönne ki a rand() hívogatása során.
A rand() egyébként ez a seed meg a belső algoritmusa alapján egy 0 és RAND_MAX (legalább 32767, maximum MAX_INT, környezetfüggő) közötti egész számot ad vissza. Ha ennek veszed a kilences maradékát, 0 és 8 közötti számokat kapsz.
Szerk.: Eh, lassú voltam.
-
Jester01
veterán
válasz
shinodas
#3206
üzenetére
A srand inicializálja a véletlenszám generátort valami kiinduló érték alapján. Azonos kiindulási értékből mindig azonos sorozat lesz (debuggoláshoz jó például). Hogy mindig más legyen, az aktuális idő van megadva.
A rand() az visszaad egy egész számot a [0, RAND_MAX] intervallumból. A % az nyilván a maradékképzés, tehát végül is a [0, 8] intervallumban fogsz számokat kapni.
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Hobby elektronika
- PlayStation 5
- OpenWRT topic
- Autós topik
- Kávé kezdőknek - amatőr koffeinisták anonim klubja
- sziku69: Fűzzük össze a szavakat :)
- Azonnali fáradt gőzös kérdések órája
- Bitcoin topic
- hcl: Poco F2 Pro facepalm
- Most már tényleg itt az Ítéletnap, premier előzetesen a Terminator 2D: NO FATE
- További aktív témák...
- UF Lenovo Yoga 9i x360 Érintős Hajtogatós Laptop Tab 14" -60% i7-1360P 16/1TB Iris Xe 2,8K OLED 90Hz
- iPhone 13 Pro Max 256GB Graphite megkímélt állapotban eladó!
- AMD Radeon RX 7900XTX Vapor-X 24GB GDDR6 Nitro+( Gari 2028-ig)
- WACOM INTUOS Pen & Touch S - Digitalizáló rajztábla
- Új Gamer PC - Ryzen 7 5700 / RTX 5060 / A520M / 16GB RAM / 1TB SSD / 650W
- Honor Pad X8 / 4/64GB / Wi-Fi / 12 Hó Garancia
- ÁRGARANCIA!Épített KomPhone Ryzen 5 4500 16/32/64GB RAM RTX 3060 12GB GAMER PC termékbeszámítással
- 5G LTE! Microsoft Surface Pro 8 i7-1185G7 16GB 512GB 1 év garancia
- Bomba ár! Lenovo Yoga 460 - i5-G6 I 8GB I 128GB SSD I 14" FHD Touch I HDMI I Cam I W10 I Gari!
- Bomba ár! Lenovo X1 Yoga 1st - i7-6G I 8GB I 256SSD I 14" WQHD Sérült I HDMI I W10 I CAM I Garancia
Állásajánlatok
Cég: ATW Internet Kft.
Város: Budapest
Cég: BroadBit Hungary Kft.
Város: Budakeszi



