Hogyan csökkenthetem még az srand idejét c++ban?
Ha beállítom, hogy srand(time(NULL)), akkor az egy másodpercen belül történő randok, ugyanazok leszenk.
Hogyan tudom levinni ezt az értéket? Tehát pl, hogy csak a fél másodpercen belüli randok legyenek ugyanazok?
a rand() nem időalapon generál, hanem az előző értékből.
Ugye az srand()-ot csak egyszer hívod meg, inicializáláskor?
Kicsit segítek, mert itt picit homály van még ahogy nézem :D
Az srand(int) eljárás inicializál egy randomszámgenerálót a megadott integer seed alapján. Ez azt jelenti, hogy ha ugyanazt a számot kapja meg, ugyanazok a random számok fognak kijönni.
A rand() ellenben nem csinál mást, mint a kapott randomgenerálóból kiveszi a következő számot. Teljesen mindegy, mikor és hányszor hívod meg a rand()-ot, mert annak semmi köze az időhöz, az egy készen kapott generátorból szedi ki sorban a számokat. (fogd fel úgy, hogy az srand összekeveri a számokat, a rand meg mindig felhúzza a legfelsőt a 'pakliból').
Te feltehetőleg azt a hibát követed el, hogy újra és újra meghívod az srand()-ot a time(NULL) paraméterrel, így újra, és újra összekeveri a számokat. És mivel a time() másodpercekben adja vissza az aktuális időt, így az srand() egy másodpercen belül ugyanazt a seed-et fogja kapni, és ugyanúgy keveri össze a számokat. Megoldás: srand()-ot csak egyszer hívd meg, utána csak rand()-al kérd ki mindig a következő random számot.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!