Pascalban hogy kell úgy egy random számot generálni, hogy megadott számok közül válasszon ki egyet?
De. Ha véletlenül pont ezeket a számokat generálnád eldobod, és generálsz újat.
Legyen már egy minimális képzelőerőd, ha már programozni akarsz.
"De. Ha véletlenül pont ezeket a számokat generálnád eldobod, és generálsz újat.
Legyen már egy minimális képzelőerőd, ha már programozni akarsz.
"
Ez nem épp a legjobb ötlet!
Ha egy nagy tartományban kevés szám közül kell generálni, akkor célszerű inkább résztartományokra bontani. Akkor a tartományok leképezhetőek lesznek egyszerű összeadás művelettel egyetlen tartományra.
Vagyis, ha pl. egytől százig kell random generálni, és a 65 nem lehet benne, akkor az leképezhető ilyen módon az 1..99 tartományra:
f(x) = x, ha x < 65; x + 1, ha x >= 65
Ez lényegében az általánosítása a tömbös megoldásnak, amit először mondtak, de a tárigény csökkenthető vele, ha ezt futási idő árán meg lehet tenni. Extrém méretű tartományok esetén egy hash táblát érdemes a leképezés tárolásához használni. Természetesen a tömbös megoldás, amit legelőször javasoltak, az ezt az algoritmust úgy valósítja meg, hogy minden tartományt egyelemű tartományokra bont. Ennek nyilván a tárigénye nyilván a lehető legnagyobb, viszont elég gyors.
Amit te írsz, az már néhány szám esetén is követhetetlen.
Az ilyen jellegû tárigény fetisizmust meg felejtsük már el 2014-ben.
"Amit te írsz, az már néhány szám esetén is követhetetlen.
Az ilyen jellegû tárigény fetisizmust meg felejtsük már el 2014-ben."
Dehogy követhetetlen! Csak okosan kell programozni. Ugye nem gondoltad komolyan, hogy a leképezést hardcode-olnám? Amikor a leképezés egyértelműen generálható a kihagyandó/tartalmazandó elemek listájából? Egy pár soros, szépen megírt kódra gondolok, nem pedig egy átláthatatlan, egymásba ágyazott ifekkel teletűzdelt hulladékra!
Amúgy pedig, ha egy száz elemű tartomány 98 eleméről van szó, akkor igen, felesleges erre ilyen megoldást szülni. Más a helyzet, ha egy 10 ezer elemű tartomány 400 eleméről van szó. És megint más, ha mondjuk egy 50 ezer elemből álló tartomány 46 ezer eleméről van szó. Minden esetben másik megoldás az optimális, és igenis lehet szükség optimalizációra.
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!