Hirdetés
- Akciófigyelő: Százezer forint engedmény a Nothing Phone (3)-ra
- Bemutatkozott a Poco X7 és X7 Pro
- Milyen okostelefont vegyek?
- Samsung Galaxy Watch6 Classic - tekerd!
- Apple Watch Sport - ez is csak egy okosóra
- Poco X6 Pro - ötös alá
- Samsung Galaxy A56 - megbízható középszerűség
- Samsung Galaxy Note10 és Note10+ duplateszt
- Samsung Galaxy A54 - türelemjáték
- iPhone topik
Ú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.
-
shinodas
tag
srand(time(NULL));
x=rand()%9;Egy programban használok egy ilyen random szám generálást, de ezt csak úgy neten találtam. Elmondanátok, hogyan működik ez pontosan?

Ú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!
- Mennyibe fog kerülni a Steam Machine?
- HiFi műszaki szemmel - sztereó hangrendszerek
- eBay-es kütyük kis pénzért
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- Mélynyomó? Nem, kompakt Chieftec ház!
- One otthoni szolgáltatások (TV, internet, telefon)
- Házimozi belépő szinten
- Elektromos autók - motorok
- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- További aktív témák...
- Bomba ár! Lenovo ThinkPad L13 G3 - i5-1245U I 16GB I 256SSD I 13,3" FHD Touch I NBD Gari!
- Tablet felvásárlás!! Apple iPad, iPad Mini, iPad Air, iPad Pro
- REFURBISHED - DELL Universal Dock D6000 (452-BCYH) (DisplayLink)
- ÁRGARANCIA!Épített KomPhone Ryzen 7 9800X3D 64GB RAM RTX 5080 16GB GAMER PC termékbeszámítással
- iKing.Hu - Apple iPhone 14 Pro Max Stílusos erő, Pro kamera rendszerrel! 128GB - 3 hónap gari!
Állásajánlatok
Cég: ATW Internet Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest




