Kezdőoldal » Számítástechnika » Programozás » Pascalban hogy kell úgy egy...

Pascalban hogy kell úgy egy random számot generálni, hogy megadott számok közül válasszon ki egyet?

Figyelt kérdés
Tehát nem úgy, hogy mondjuk 1-től 100-ig, hanem úgy, hogy például adott a 65, a 69, a 73, a 79 és a 85 és e közül az 5 közül válasszon ki egyet véletlenszerűen.

2014. jún. 30. 16:52
1 2 3
 1/25 Arneal válasza:
100%
Pl. belerakod egy tömbbe a számaidat és a tömb indexét generálod véletlen számként.
2014. jún. 30. 16:54
Hasznos számodra ez a válasz?
 2/25 A kérdező kommentje:
Köszönöm, ez tényleg jó, de én olyat is szeretnék, hogy nagyon sok szám van. Tehát azt például nem tudom valahogy egyszerűen jelölni, hogy adjon egy random számot 1 és 1000 között kihagyva mondjuk a 6-ot és a 876-ot?
2014. jún. 30. 17:14
 3/25 anonim ***** válasza:
75%

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.

2014. jún. 30. 17:30
Hasznos számodra ez a válasz?
 4/25 anonim ***** válasza:
57%

"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.

2014. jún. 30. 17:46
Hasznos számodra ez a válasz?
 5/25 anonim ***** válasza:
63%

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.

2014. jún. 30. 17:51
Hasznos számodra ez a válasz?
 6/25 anonim ***** válasza:
42%

"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.

2014. jún. 30. 18:02
Hasznos számodra ez a válasz?
 7/25 anonim ***** válasza:
69%
A végtelen ciklusos megoldás, amit te írtál, az pedig végképp rossz. Egyrészt mivel matematikailag ebben benne van a végtelen ciklus lehetősége is. Másrészt pedig, bizonyos konkrét esetekben ténylegesen nagyon lassú lehet. (Szélsőséges esetben akár órákat is igénybe vehet egyetlen szám kiválasztása. Ha nem hiszed, akkor írd meg a kódot és teszteld le jó minőségű tesztekkel)
2014. jún. 30. 18:06
Hasznos számodra ez a válasz?
 8/25 anonim ***** válasza:
80%
LoL.
2014. jún. 30. 18:50
Hasznos számodra ez a válasz?
 9/25 anonim ***** válasza:

Tessék Guitar God, lehet fogadni, mennyinél áll meg az "algoritmusod" :)


[link]

2014. jún. 30. 21:38
Hasznos számodra ez a válasz?
 10/25 anonim ***** válasza:
Nem ismerem a pythont, de ha te balf#sz vagy megírni egy ilyen egyszerű algoritmust az ne az én hibám legyen már.
2014. jún. 30. 21:59
Hasznos számodra ez a válasz?
1 2 3

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!