Pascalban tömb véletlenszerű elemeinek generálása úgy, hogy egy elem maximum egyszer fordulhat elő?
Pascalban lehetséges egy tömb elemeit véletlenszerűen generálni úgy, hogy 1 elem maximum egyszer forduljon elő?
Próbáltam elöltesztelős ciklussal is, de nem sikerül.
Pascalt nem ismerem, de valami ilyesmi a megoldás:
i = 1
while ( i<n ) {
j = 1
elöfordult = false
szam = random
while ( j<i !elöfordult ) {
elofordult = ( A[j]==szam )
}
if (!elofordult) {
A[i] = szam
i = i+1
}
}
Az egyik megoldás: Amint kiválasztasz egy elemet, úgy megvizsgálod, hogy már generálva lett-e az adott elem. Ha nem, akkor eltárolod egy „már generált elemek” tartalmú tömbbe.
Másik megoldás: Kártyapakli. Ha a tömb elemeinek eredeti sorrendje a továbbiakban már nem kell, akkor elindulsz a tömbön az első elemtől az utolsóig. Mielőtt kiírod az adott indexű elemet, megcseréled egy véletlenszerűen kiválasztott „nem előző” (következő vagy önmaga) elemmel. Előny: Kisebb memóriaigény. Hátrány: A tömb eredeti sorrendje elveszik.
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!