Kezdőoldal » Számítástechnika » Programozás » Miért adja mindig ugyan azt a...

Miért adja mindig ugyan azt a "random" eredményt a c++?

Figyelt kérdés

[link]


1.18-nál mindig "kifagy". Miért csinálja ezt?

Elméletileg ennek teljesen randomnak kellene lennie, és

1.00 tól 1000ig is elmehetne, viszont 1.18-on nem jut túl sosem.


Egyébként az ötlet a Crash nevű online szerencsejátékból származik.


2021. jan. 4. 18:38
 1/5 anonim ***** válasza:
25%
Nem nézem meg a kódodat de ált. akkor van ez, ha nem inicializálod a függvényt.
2021. jan. 4. 18:40
Hasznos számodra ez a válasz?
 2/5 anonim ***** válasza:
100%

Mert a rand függvényt inicializálni kell első használat előtt.

Main elejére rakj egy ilyet:

srand(time(NULL));

include-olj, meg esetleg névterek ha kellenek, és máris jobb lesz.

2021. jan. 4. 19:01
Hasznos számodra ez a válasz?
 3/5 anonim ***** válasza:
100%

Azért mindig ugyanazt az értéket adja vissza, mert az std::rand() pszeudo-véletlenszámot generál, aminek kell adni egy "kezdőértéket" (seed).

Ha ezt nem adod meg, akkor automatikusan ugyanazt az értéket állítja be, így a generált pszeudo-véletlenszám is ugyanaz lesz.


"If rand() is used before any calls to srand(), rand() behaves as if it was seeded with srand(1)."

[link]


Érdemes az std::srand() és az aktuális idő (std::time(0)) segítségével változó "kezdőértéket" generálni - lásd:

[link]

2021. jan. 4. 19:01
Hasznos számodra ez a válasz?
 4/5 anonim ***** válasza:

Ja és ilyen nem kell, és amúgy is szabálytalan:

fflush(stdout);

Töröld a g...be

2021. jan. 4. 19:01
Hasznos számodra ez a válasz?
 5/5 tabaki ***** válasza:

Nem ismerem a kérdéses játékot, de a programodhoz írtam egy variációt, három tizedesjegyre. Bár nem sok közöm van a programozáshoz, hátha tanulságos lesz egy másik próbálkozást is szemügyre venned, a tanult kollégák meg majd kijavítják, ha marhaságok kerültek bele, az pedig már kettőnknek hasznos...

Az „1.00 tól 1000ig” határokat nem egészen értem. A számláló 0.0-ról indul, és amennyire látom, legalábbis elvi akadálya nincs annak, hogy akármeddig növekedjen, akár át is forduljon, és a mínusz tartományban folytassa – ha nem is túl valószínű. Én mindenesetre raktam bele egy korlátot 2.0-ra, igaz, hogy valójában még azt is ritkán éri el. Itt a kód:

[link]

2021. jan. 5. 12:57
Hasznos számodra ez a válasz?

További 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!