Kezdőoldal » Számítástechnika » Programozás » Hogyan csökkenthetem még az...

Hogyan csökkenthetem még az srand idejét c++ban?

Figyelt kérdés

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?



2016. márc. 22. 08:36
 1/5 anonim ***** válasza:
100%

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?

2016. márc. 22. 09:19
Hasznos számodra ez a válasz?
 2/5 anonim ***** válasza:
100%
A srand-ot csak egyszer kell meghívni!
2016. márc. 22. 09:27
Hasznos számodra ez a válasz?
 3/5 anonim ***** válasza:
100%

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.

2016. márc. 22. 10:54
Hasznos számodra ez a válasz?
 4/5 A kérdező kommentje:
Igen, igazatok volt. Minden egyes alkalommalmeghívom az srandot.
2016. márc. 23. 07:16
 5/5 anonim ***** válasza:
Ez mondjuk a dokumentációból is kiderült volna.
2016. márc. 23. 08:37
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!