(C++) Random szám generátor?
Figyelt kérdés
int res;
void random()
{
srand (time (NULL));
res = rand() %2 + 1;
}
azt szeretném, hogy 1-et vagy 2-t adjon, de hiába rakom FOR-ba, hogy 100-szor lefusson, mindig vagy csak 1-et vagy csak 2-t ad
2016. dec. 28. 22:44
1/6 anonim válasza:
Az srand(time(NULL)) ne legyen a ciklusban.
2/6 A kérdező kommentje:
Istenem... köszönöm, egész nap emiatt szenvedtem akkor :D
2016. dec. 28. 22:51
3/6 anonim válasza:
Az srand() egy megadott seed alapján előállít egy random számsort. Ha ugyanaz a seed, ugyanazt a számsort kapod. Azzal, hogy az srand() bele van rakva a ciklusba, mindig új számsort generál az aktuális idő alapján, így mindig a számsor első elemét fogod venni. A dolgot tetézzük azzal, hogy a time() az aktuális időt MÁSODPERCBEN adja vissza, így egy másodpercen belül ugyanazt a seedet fogja kapni az srand, és ugyanazt a számsort generálja le, aminek ugyanazt az első elemér veszed. Csak hogy értsd azt is, hogy miért nem volt jó amit elsőnek csináltál, ne csak azt, hogy nem volt jó.
4/6 anonim válasza:
Azt csak extraként emelném ki, hogy az efféle függvényhasználat borzasztó rossz.
Ahelyett, hogy a függvényed visszaadná a véletlenszerűen generált értéket egy külső változót módosít mellékhatásként.
Ezzel csak egy dolgot érsz el: követhetetlen, karbantarthatatlan, tesztelhetetlen kódod lesz.
A kód helyesen:
int random()
{
return rand() %2 + 1;
}
5/6 anonim válasza:
6/6 anonim válasza:
C++ nyelven éles kódban már nem használják a C-s rand függvényt. [link]
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!
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!